翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EMR での Amazon の開始方法 EKS
このトピックは、仮想クラスターに Spark アプリケーションをデプロイEKSして、 EMR で Amazon の使用を開始するのに役立ちます。これには、正しいアクセス許可を設定し、ジョブを開始する手順が含まれています。開始する前に、「EMR で Amazon を設定する EKS」の手順を完了しておくようにしてください。これにより、仮想クラスターを作成する前に AWS CLI のセットアップなどのツールを取得できます。開始に役立つその他のテンプレートについては、「」のEMR「コンテナのベストプラクティスガイド
セットアップ手順の次の情報が必要になります。
-
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.pyREGION
は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-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
.elasticmapreduceentryPoint
ファイルが配置されているバケット。 -
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
-
-
Spark Python アプリケーションを実行するには、次のコマンドを使用します。交換可能な をすべて置き換える
red italicized
適切な値を持つ値。-REGION
は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-1
.aws emr-containers start-job-run \ --virtual-cluster-id
cluster_id
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-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 でジョブ実行を送信する」を参照してください。ジョブ実行パラメータの設定について詳しくは、ジョブ実行を構成するためのオプション を参照してください。 -
Spark SQLアプリケーションを実行するには、次のコマンドを使用します。すべての を置き換える
red italicized
適切な値を持つ値。-REGION
は、Amazon EMR on EKS Virtual クラスターが存在するリージョンです。例えば、us-east-1
.aws emr-containers start-job-run \ --virtual-cluster-id
cluster_id
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-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 ログで使用できます。 -
ジョブ実行用に指定されたパラメータを持つ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、アップロードされたログイベントを表示します。
-
重要
ジョブにはデフォルトで再試行ポリシーが設定されています。構成を変更または無効にする方法については、「Using job retry policies」を参照してください。