EMR での Amazon の開始方法 EKS - Amazon EMR

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

EMR での Amazon の開始方法 EKS

このトピックは、仮想クラスターに Spark アプリケーションをデプロイEKSして、 EMR で Amazon の使用を開始するのに役立ちます。これには、正しいアクセス許可を設定し、ジョブを開始する手順が含まれています。開始する前に、「EMR で Amazon を設定する EKS」の手順を完了しておくようにしてください。これにより、仮想クラスターを作成する前に AWS CLI のセットアップなどのツールを取得できます。開始に役立つその他のテンプレートについては、「」のEMR「コンテナのベストプラクティスガイド」を参照してください GitHub。

セットアップ手順の次の情報が必要になります。

  • Amazon に登録されている Amazon クラスターと Kubernetes 名前空間の仮想EKSクラスター ID EMR

    重要

    EKS クラスターを作成するときは、インスタンスタイプとして m5.xlarge を使用するか、 CPU および メモリが高い他のインスタンスタイプを使用してください。インスタンスタイプを m5.xlarge よりも低い CPUまたは メモリで使用すると、クラスターで使用できるリソースが不足するため、ジョブが失敗する可能性があります。

  • ジョブの実行に使用されるIAMロールの名前

  • Amazon リリースのEMRリリースラベル (例: emr-6.4.0-latest

  • ロギングおよびモニタリングの送信先ターゲット:

    • Amazon CloudWatch ロググループ名とログストリームプレフィックス

    • イベントログとコンテナログを保存する Amazon S3 の場所

重要

Amazon EMR on EKSジョブでは、Amazon CloudWatch と Amazon S3 をモニタリングとログ記録の送信先ターゲットとして使用します。これらの送信先に送信されるジョブログを表示することで、ジョブの進行状況をモニタリングし、エラーのトラブルシューティングを行うことができます。ログ記録を有効にするには、ジョブ実行のIAMロールに関連付けられたIAMポリシーに、ターゲットリソースにアクセスするために必要なアクセス許可が必要です。IAM ポリシーに必要なアクセス許可がない場合は、このサンプルジョブを実行する前にジョブ実行ロールの信頼ポリシーを更新する、「」、「Amazon S3 ログを使用するようにジョブ実行を設定する」、 CloudWatch 「ログを使用するようにジョブ実行を設定する」で説明されているステップに従う必要があります。 Amazon S3

Spark アプリケーションの実行

Amazon on でシンプルな Spark アプリケーションを実行するには、次の手順を実行しますEMREKS。Spark Python アプリケーションのアプリケーション entryPoint ファイルは、s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py にあります。- REGION は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-1.

  1. 次のIAMポリシーステートメントに示すように、必要なアクセス許可でジョブ実行ロールのポリシーを更新します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadFromLoggingAndInputScriptBuckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*", "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket", "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] }, { "Sid": "WriteToLoggingAndOutputDataBuckets", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] }, { "Sid": "DescribeAndCreateCloudwatchLogStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Sid": "WriteToCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
    • このポリシーの最初のステートメントである ReadFromLoggingAndInputScriptBuckets は、ListBucket および GetObjects に次の Amazon S3 バケットへのアクセスを許可します。

      • REGION.elasticmapreduce ‐ アプリケーション entryPoint ファイルが配置されているバケット。

      • amzn-s3-demo-destination-bucket - 出力データ用に定義するバケット。

      • amzn-s3-demo-logging-bucket - ログデータ用に定義するバケット。

    • このポリシーの 2 番目のステートメントである WriteToLoggingAndOutputDataBuckets は、出力バケットとログバケットにそれぞれデータを書き込むアクセス許可をジョブに付与します。

    • 3 番目のステートメントは、Amazon CloudWatch Logs を記述および作成するアクセス許可をジョブにDescribeAndCreateCloudwatchLogStream付与します。

    • 4 番目のステートメントは、 という名前の Amazon CloudWatch ロググループにログを書き込むアクセス許可WriteToCloudwatchLogsを付与します。my_log_group_name という名前のログストリームの下 my_log_stream_prefix.

  2. Spark Python アプリケーションを実行するには、次のコマンドを使用します。交換可能な をすべて置き換える red italicized 適切な値を持つ値。- REGION は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.4.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket/wordcount_output"], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'

    このジョブからの出力データは、s3://amzn-s3-demo-destination-bucket/wordcount_output で使用できます。

    ジョブ実行用に指定されたパラメータを持つJSONファイルを作成することもできます。次に、 JSON ファイルへのパスを使用して start-job-run コマンドを実行します。詳細については、「StartJobRun でジョブ実行を送信する」を参照してください。ジョブ実行パラメータの設定について詳しくは、ジョブ実行を構成するためのオプション を参照してください。

  3. Spark SQLアプリケーションを実行するには、次のコマンドを使用します。すべての を置き換える red italicized 適切な値を持つ値。- REGION は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.7.0-latest \ --job-driver '{ "sparkSqlJobDriver": { "entryPoint": "s3://query-file.sql", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'

    サンプルSQLクエリファイルを以下に示します。テーブルのデータが保存される S3 などの外部ファイルストアが必要です。

    CREATE DATABASE demo; CREATE EXTERNAL TABLE IF NOT EXISTS demo.amazonreview( marketplace string, customer_id string, review_id string, product_id string, product_parent string, product_title string, star_rating integer, helpful_votes integer, total_votes integer, vine string, verified_purchase string, review_headline string, review_body string, review_date date, year integer) STORED AS PARQUET LOCATION 's3://URI to parquet files'; SELECT count(*) FROM demo.amazonreview; SELECT count(*) FROM demo.amazonreview WHERE star_rating = 3;

    このジョブの出力は、設定monitoringConfigurationされている に応じて CloudWatch、S3 または のドライバーの stdout ログで使用できます。

  4. ジョブ実行用に指定されたパラメータを持つJSONファイルを作成することもできます。次に、 start-job-run JSON ファイルへのパスを使用して コマンドを実行します。詳細については、「Submit a job run」を参照してください。ジョブ実行パラメータの設定について詳しくは、「Options for configuring a job run」を参照してください。

    ジョブの進行状況をモニタリングしたり、障害をデバッグしたりするには、Amazon S3、 CloudWatch Logs、またはその両方にアップロードされたログを検査できます。Amazon S3 のS3 ログを使用するようにジョブ実行を設定する」および CloudWatch 「ログを使用するようにジョブ実行を設定する」を参照してください。 CloudWatch Logs のログを表示するには、以下の手順に従ってください。

    • で CloudWatch コンソールを開きますhttps://console.aws.amazon.com/cloudwatch/

    • ナビゲーションペインで [ログ] を選択します。次に、[ロググループ] を選択します。

    • EMR で Amazon のロググループを選択しEKS、アップロードされたログイベントを表示します。

    CloudWatch ログを使用したモニタリング
重要

ジョブにはデフォルトで再試行ポリシーが設定されています。構成を変更または無効にする方法については、「Using job retry policies」を参照してください。