EmrCluster - AWS Data Pipeline

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

EmrCluster

Amazon EMR クラスターの設定を表します。このオブジェクトは、クラスターの起動EmrActivityHadoopActivity および によって使用されます。

Schedulers

スケジューラーは、Hadoop クラスター内のリソースの割り当てとジョブの優先順位付けを指定する方法を提供します。管理者またはユーザーは、ユーザーおよびアプリケーションのクラス別のスケジューラーを選択できます。スケジューラーは、キューを使用してユーザーおよびアプリケーションにリソースを割り当てることができます。キューは、クラスターを作成する際に設定します。次に、特定のタイプの作業やユーザー間の優先順位を設定できます。これにより、クラスターのリソースが効率的に使用され、複数のユーザーから作業をクラスターに送信できるようになります。次の 3 種類のスケジューラーを使用できます。

  • 長期間にわたってリソースの均等なスケジュールをFairScheduler—試みます。

  • CapacityScheduler—キューを使用して、クラスター管理者がさまざまな優先度とリソース割り当てのキューにユーザーを割り当てられるようにします。

  • Default — クラスターで使用されます。サイトで設定可能です。

Amazon EMR リリースバージョン

Amazon EMRリリースは、ビッグデータエコシステムからの一連のオープンソースのアプリケーションです。各リリースは異なるビッグデータアプリケーション、コンポーネント、および機能で構成され、クラスターを作成するときに Amazon EMRでインストールして設定することを選択します。リリースラベルを使用してリリースバージョンを指定します。リリースラベルの形式は emr-x.x.xです。 たとえば、リリースラベルemr-5.30.0およびそれ以降に基づく Amazon EMR emr-4.0.0クラスターは、 releaseLabel プロパティを使用して、 EmrCluster オブジェクトのリリースラベルを指定します。以前のバージョンでは、amiVersion プロパティを使用しています。

重要

リリースバージョン 5.22.0 以降を使用して作成されたすべての Amazon EMR クラスターでは、署名バージョン 4 を使用して Amazon S3 へのリクエストを認証します。以前の一部のリリースバージョンでは、署名バージョン 2 を使用しています。署名バージョン 2 のサポートは中止されています。詳細については、「Amazon S3 SigV2 の更新 - 拡張および変更済みの廃止期間」を参照してください。署名バージョン 4 をサポートする Amazon EMR リリースバージョンを使用することを強くお勧めします。EMR 4.7.x から始まる以前のバージョンのリリースでは、そのシリーズの最新リリースが署名バージョン 4 をサポートするように更新されています。以前のバージョンの EMR リリースを使用する場合は、そのシリーズの最新リリースを使用することをお勧めします。また、EMR 4.7.0 より前のリリースは使用しないでください。

考慮事項と制約事項

Task Runner の最新バージョンを使用する

リリースラベルを持つ自己管理型EmrClusterオブジェクトを使用している場合は、最新の Task Runner を使用します。Task Runner の詳細については、「Task Runner の操作」を参照してください。Amazon EMR 設定のすべての分類に対してプロパティ値を設定できます。詳細については、 、 Amazon EMR リリース ガイド 、および オブジェクトリファレンスEmrConfigurationの「アプリケーションPropertyの設定」を参照してください。

Amazon EMR6.0.0 はサポートされていません

AWS Data PipelineはAmazon EMR、リリースバージョン 6.0.0 (emr-6.0.0) をサポートしていません。このバージョンの Amazon EMRは Apache Pig をサポートしていないためです。

Amazon EMR6.x リリースと Hadoop 3.x Jar 依存関係

Amazon EMR6.x リリースシリーズでは、Hadoop バージョン 3.x を使用しています。これにより、Hadoop のバージョン 2.x と比較して、Hadoop のクラスパスの評価方法が大幅に変更されます。Joda-Time などの共通ライブラリがクラスパスから削除されました。

Hadoop 3.x で削除されたライブラリに依存関係がある Jar ファイルEmrActivityを実行HadoopActivityした場合、ステップはエラーjava.lang.NoClassDefFoundErrorまたは で失敗しますjava.lang.ClassNotFoundException。 5.x リリースバージョンを使用しても問題なく実行された Jar ファイルでこれが発生する可能性があります。Amazon EMR

この問題を解決するには、 EmrClusterまたは を開始する前に、EmrActivityオブジェクトの Hadoop クラスパスに Jar ファイルの依存関係をコピーする必要がありますHadoopActivity。 これを行うための bash スクリプトが用意されています。bash スクリプトは次の場所で使用できます。MyRegion は、 AWS オブジェクトが実行される EmrCluster リージョンです ( など)us-west-2

s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh

スクリプトを実行する方法は、 が管理するリソースでEmrActivity実行されるか、自己管理型リソースで実行されるHadoopActivityかによって異なります。AWS Data Pipeline

によって管理されるリソースを使用する場合は、AWS Data PipelineオブジェクトbootstrapActionに を追加します。EmrClusterbootstrapActionは、コピーするスクリプトと Jar ファイルを引数として指定します。bootstrapActionオブジェクトごとに最大 255 のEmrClusterフィールドを追加できます。また、既にブートストラップアクションを持つbootstrapActionオブジェクトにEmrClusterフィールドを追加できます。

このスクリプトをブートストラップアクションとして指定するには、次の構文を使用します。ここで、 JarFileRegion は Jar ファイルが保存される リージョンであり、各 は MyJarFilen は、Hadoop クラスパスにコピーされる Jar ファイル内の絶対パスです。Amazon S3デフォルトでは、Hadoop クラスパスにある Jar ファイルを指定しないでください。

s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,JarFileRegion,MyJarFile1,MyJarFile2[, ...]

次の例では、 で 2 つの Jar ファイルをコピーするブートストラップアクションを指定しますAmazon S3。my-jar-file.jarおよび emr-dynamodb-tool-4.14.0-jar-with-dependencies.jar。 この例で使用されているリージョンは、us-west-2 です。

{ "id" : "MyEmrCluster", "type" : "EmrCluster", "keyPair" : "my-key-pair", "masterInstanceType" : "m5.xlarge", "coreInstanceType" : "m5.xlarge", "coreInstanceCount" : "2", "taskInstanceType" : "m5.xlarge", "taskInstanceCount": "2", "bootstrapAction" : ["s3://datapipeline-us-west-2/us-west-2/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,us-west-2,s3://path/to/my-jar-file.jar,s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar"] }

新しい変更を有効にするには、パイプラインを保存してアクティブ化する必要があります。bootstrapAction

自己管理型リソースを使用する場合は、クラスターインスタンスにスクリプトをダウンロードし、SSH を使用してコマンドラインから実行できます。スクリプトは、 という名前のディレクトリ/etc/hadoop/conf/shellprofile.dと、そのディレクトリdatapipeline-jars.sh内のファイルを作成します。コマンドライン引数として提供される jar ファイルは、スクリプトによって作成されるディレクトリ ( ) /home/hadoop/datapipeline_jars にコピーされます。 クラスターの設定が異なる場合は、ダウンロード後にスクリプトを適切に変更してください。

コマンドラインでスクリプトを実行するための構文は、前の例に示されている の使用とは若干異なります。bootstrapAction次の例に示すように、引数間にカンマの代わりにスペースを使用します。

./copy-jars-to-hadoop-classpath.sh us-west-2 s3://path/to/my-jar-file.jar s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar

Amazon EMR のアクセス許可

カスタム IAM ロールを作成する場合は、クラスターが作業を実行するために必要な最小限のアクセス権限を慎重に検討します。のファイルAmazon S3や 、 Amazon RDS 、 のデータなど、必要なリソースへのアクセス権を確実に付与Amazon Redshiftします。DynamoDBvisibleToAllUsers を False に設定する場合は、そのために必要なアクセス権限がロールに必要です。DataPipelineDefaultRole には、これらのアクセス権限がないことに注意してください。DefaultDataPipelineResourceRoleオブジェクトのロールとして とDataPipelineDefaultRoleロールの結合を指定するか、この目的で独自のロールを作成する必要があります。EmrCluster

以下の資料も参照してください。