Amazon EMR
Amazon EMR リリースガイド

Amazon EMR アーティファクトリポジトリを使用して依存関係を確認する

Amazon EMR 5.18.0 以降では、Amazon EMR アーティファクトリポジトリを使用し、特定の Amazon EMR リリースバージョンで利用可能なライブラリおよび依存関係の正確なバージョンに対して Apache Hive および Apache Hadoop ジョブコードをビルドできます。リポジトリの Amazon EMR アーティファクトに対してビルドすると、ジョブがビルドされるライブラリのバージョンがクラスターでの実行時に提供されるバージョンとまったく同じになることで、ランタイムクラスパスの問題を回避できます。現在、Amazon EMR アーティファクトは Maven ビルドでのみ使用可能です。

アーティファクトリポジトリにアクセスするには、リポジトリ URL を Maven 設定ファイルまたは特定のプロジェクトの pom.xml 設定ファイルに追加します。その後、プロジェクト設定に依存関係を指定できます。依存関係のバージョンについては、「Amazon EMR 5.x リリースバージョン」の目的のリリースのコンポーネントバージョンにリストされているバージョンを使用します。たとえば、最新の Amazon EMR リリースのコンポーネントバージョンは コンポーネントバージョン にあります。プロジェクトのアーティファクトがコンポーネントバージョンにリストされていない場合は、そのリリースの Hive と Hadoop にリストされているバージョンを指定します。たとえば、Amazon EMR リリースバージョン 5.18.0 の Hadoop コンポーネントの場合、バージョンは 2.8.4-amzn-1 です。

アーティファクトリポジトリ URL の構文は次のとおりです。

https://s3-endpoint/region-ID-emr-artifacts/emr-release-label/repos/maven/
  • s3-endpoint はリポジトリのリージョンの Amazon Simple Storage Service (Amazon S3) エンドポイントで、region-ID は対応するリージョンです。たとえば、s3.us-west-1.amazonaws.comus-west-1 です。詳細については、アマゾン ウェブ サービス全般のリファレンス の Amazon S3 エンドポイントを参照してください。リージョン間でアーティファクトに違いはないため、開発環境に対して最も便利なリージョンを指定することができます。

  • emr-release-label は、コードを実行する Amazon EMR クラスター用のリリースラベルです。リリースラベルの形式は emr-x.x.x. For example, emr-5.27.0. です

例 Maven pom.xml の設定

次の pom.xml の例では、us-west-1 のアーティファクトリポジトリを使用して、emr-5.18.0 Apache Hadoop および Apache Hive アーティファクトに対してビルドするように Maven プロジェクトを設定します。スナップショットのバージョンはアーティファクトリポジトリでは使用できないため、スナップショットは pom.xml で無効になります。次の例の省略記号 (...) は、他の設定パラメータの省略を示します。Maven プロジェクトにこれらをコピーしないでください。

<project> ... <repositories> ... <repository> <id>emr-5.18.0-artifacts</id> <name>EMR 5.18.0 Releases Repository</name> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <url>https://s3.us-west-1.amazonaws.com/us-west-1-emr-artifacts/emr-5.18.0/repos/maven/</url> </repository> ... </repositories> ... <dependencies> ... <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>2.3.3-amzn-2</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.8.4-amzn-1</version> </dependency> ... </dependencies> </project>