Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon EMR クラスターで使用するように Docker を設定する

フォーカスモード
Amazon EMR クラスターで使用するように Docker を設定する - Amazon EMR

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

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

Amazon EMR 6.x は Hadoop 3 をサポートしているため、YARN NodeManager によって Amazon EMR クラスターで直接コンテナを起動したり、Docker コンテナ内でコンテナを起動したりできます。Docker コンテナは、アプリケーションコードを実行するカスタム実行環境を提供します。カスタム実行環境は、YARN NodeManager やその他のアプリケーションの実行環境から分離されます。

Docker コンテナには、アプリケーションで使用する特別なライブラリを含めることができます。また、Docker コンテナは、R や Python など、ネイティブツールやライブラリの異なるバージョンを提供できます。使い慣れた Docker ツールを使用して、アプリケーションのライブラリとランタイム依存関係を定義できます。

Amazon EMR 6.x クラスターは、デフォルトの設定では、Docker コンテナを使用して YARN アプリケーション (Spark など) を実行できます。コンテナ設定をカスタマイズするには、/etc/hadoop/conf ディレクトリの yarn-site.xml ファイルと container-executor.cfg ファイルに定義されている Docker サポートオプションを編集します。各設定オプションとその使用方法の詳細については、「Launching Applications Using Docker Containers」を参照してください。

ジョブを送信するときに Docker を使用することを選択できます。Docker ランタイムと Docker イメージを指定するには、次の変数を使用します。

  • YARN_CONTAINER_RUNTIME_TYPE=docker

  • YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={DOCKER_IMAGE_NAME}

Docker コンテナを使用して YARN アプリケーションを実行すると、YARN はジョブの送信時に指定した Docker イメージをダウンロードします。この Docker イメージを YARN で解決するには、Dockerレジストリを設定する必要があります。Docker レジストリの設定オプションは、クラスターのデプロイにパブリックサブネットとプライベートサブネットのどちらを使用するかによって異なります。

Docker レジストリ

Docker レジストリは、Docker イメージのストレージおよびディストリビューションシステムです。Amazon EMR の場合、フルマネージド型の Docker コンテナレジストリである Amazon ECR を使用することをお勧めします。これにより、独自のカスタムイメージを作成し、これらのイメージを可用性とスケーラビリティに優れたアーキテクチャでホストできます。

デプロイに関する考慮事項

Docker レジストリは、クラスター内の各ホストからのネットワークアクセスを必要とします。これは、YARN アプリケーションがクラスターで実行されているときに、各ホストが Docker レジストリからイメージをダウンロードするためです。これらのネットワーク接続要件により、Amazon EMR クラスターのデプロイ先をパブリックサブネットとプライベートサブネットのどちらにするかで、Docker レジストリの選択が制限される場合があります。

パブリックサブネット

EMR クラスターをパブリックサブネットにデプロイすると、YARN NodeManager を実行しているノードは、インターネット経由で利用可能なすべてのレジストリに直接アクセスできます。

プライベートサブネット

EMR クラスターをプライベートサブネットにデプロイすると、YARN NodeManager を実行しているノードはインターネットに直接アクセスできません。Docker イメージは Amazon ECR でホストし、 を介してアクセスできます AWS PrivateLink。

AWS PrivateLink を使用してプライベートサブネットシナリオで Amazon ECR へのアクセスを許可する方法の詳細については、「Amazon ECS のセットアップ」および「Amazon ECR AWS PrivateLink」を参照してください。

Docker レジストリの設定

Amazon EMR で Docker レジストリを使用するには、Docker イメージの解決に使用する特定のレジストリを信頼するように Docker を設定する必要があります。デフォルトの信頼レジストリは、ローカル (プライベート) と centos です。他のパブリックリポジトリや Amazon ECR を使用する場合は、EMR 分類 API を container-executor 分類キーで使用して、/etc/hadoop/conf/container-executor.cfgdocker.trusted.registries 設定をオーバーライドできます。

次の例は、your-public-repo という名前のパブリックリポジトリと、ECR レジストリエンドポイント 123456789123.dkr.ecr.us-east-1.amazonaws.com の両方を信頼するようにクラスターを設定する方法を示しています。ECR を使用する場合は、このエンドポイントを特定の ECR エンドポイントに置き換えます。

[ { "Classification": "container-executor", "Configurations": [ { "Classification": "docker", "Properties": { "docker.trusted.registries": "local,centos,your-public-repo,123456789123.dkr.ecr.us-east-1.amazonaws.com", "docker.privileged-containers.registries": "local,centos,your-public-repo,123456789123.dkr.ecr.us-east-1.amazonaws.com" } } ] } ]

AWS Command Line Interface (AWS CLI) を使用してこの設定で Amazon EMR 6.0.0 クラスターを起動するには、前述の ontainer-executor JSON 設定の内容container-executor.jsonで という名前のファイルを作成します。次に、次のコマンドを使用してクラスターを起動します。

export KEYPAIR=<Name of your Amazon EC2 key-pair> export SUBNET_ID=<ID of the subnet to which to deploy the cluster> export INSTANCE_TYPE=<Name of the instance type to use> export REGION=<Region to which to deploy the cluster> aws emr create-cluster \ --name "EMR-6.0.0" \ --region $REGION \ --release-label emr-6.0.0 \ --applications Name=Hadoop Name=Spark \ --service-role EMR_DefaultRole \ --ec2-attributes KeyName=$KEYPAIR,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=$SUBNET_ID \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=$INSTANCE_TYPE InstanceGroupType=CORE,InstanceCount=2,InstanceType=$INSTANCE_TYPE \ --configuration file://container-executor.json

EMR 6.0.0 以前で Amazon ECR にアクセスするための YARN の設定

Amazon ECR を初めて使用する場合は、「Amazon ECR の開始方法」の手順に従い、Amazon EMR クラスター内の各インスタンスから Amazon ECR にアクセスできることを確認します。

EMR 6.0.0 以前では、Docker コマンドを使用して Amazon ECR にアクセスするには、まず認証情報を生成する必要があります。YARN が Amazon ECR からイメージにアクセスできることを確認するには、コンテナ環境変数 YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG を使用して、生成した認証情報への参照を渡します。

コアノードの 1 つで次のコマンドを実行して、ECR アカウントのログイン行を取得します。

aws ecr get-login --region us-east-1 --no-include-email

get-login コマンドは、認証情報を作成するために実行する必要がある正しい Docker CLI コマンドを生成します。get-login から出力をコピーして実行します。

sudo docker login -u AWS -p <password> https://<account-id>.dkr.ecr.us-east-1.amazonaws.com

このコマンドは、/root/.docker フォルダ内に config.json ファイルを生成します。このファイルを HDFS にコピーします。クラスターに送信されたジョブは、このファイルを使用して Amazon ECR に対して認証することができます。

次のコマンドを実行して、config.json ファイルをホームディレクトリにコピーします。

mkdir -p ~/.docker sudo cp /root/.docker/config.json ~/.docker/config.json sudo chmod 644 ~/.docker/config.json

次のコマンドを実行して、config.json を HDFS に配置し、クラスターで実行されるジョブで使用できるようにします。

hadoop fs -put ~/.docker/config.json /user/hadoop/

YARNは、Docker イメージレジストリとしての ECR にアクセスし、ジョブ実行中にコンテナをプルできます。

Docker レジストリと YARN を設定したら、Docker コンテナを使用して YARN アプリケーションを実行できます。詳細については、「Amazon EMR 6.0.0 を使用して Docker で Spark アプリケーションを実行する」を参照してください。

EMR 6.1.0 以降では、Amazon ECR への認証を手動でセットアップする必要はありません。container-executor 分類キーで Amazon ECR レジストリが検出された場合、Amazon ECR 自動認証機能がアクティブになり、ECR イメージで Spark ジョブを送信する際に YARN が認証プロセスを処理します。yarn-site で yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled を調べると、自動認証が有効になっているかどうかを確認することができます。docker.trusted.registries に ECR レジストリ URL が含まれている場合、自動認証が有効であり、YARN 認証設定が true に設定されています。

Amazon ECR への自動認証を使用するための前提条件

  • EMR バージョン 6.1.0 以降

  • 設定に含まれる ECR レジストリは、クラスターと同じリージョンにあります

  • 認可トークンを取得し、任意のイメージをプルする許可を持つ IAM ロール

詳細については、「Amazon ECR を使用してセットアップする」を参照してください。

自動認証を有効にする方法

Docker レジストリの設定 」に従って Amazon ECR レジストリを信頼できるレジストリとして設定し、Amazon ECR リポジトリとクラスターが同じリージョンにあることを確認します。

信頼できるレジストリに ECR レジストリが設定されていない場合でもこの機能を有効にするには、設定分類を使用して yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabledtrue に設定します。

自動認証を無効にする方法

デフォルトでは、信頼できるレジストリで Amazon ECR レジストリが検出されない場合、自動認証は無効になります。

信頼できるレジストリに Amazon ECR レジストリが設定されている場合でも自動認証を無効にするには、設定分類を使用して yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabledfalse に設定します。

クラスターで自動認証が有効になっているかどうかを確認する方法

マスターノードで、vi などのテキストエディタを使用して、ファイル vi /etc/hadoop/conf.empty/yarn-site.xml のコンテンツを表示します。yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled の値を確認します。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.