

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

# Amazon EMR on EKS のご利用開始にあたって
<a name="getting-started"></a>

このトピックを参照し、仮想クラスターに Spark アプリケーションをデプロイすることで、EKS での Amazon EMR を使い始めるのに役立ちます。これには、正しいアクセス許可を設定し、ジョブを開始する手順が含まれています。開始する前に、「[Amazon EMR on EKS のセットアップ](setting-up.md)」の手順を完了しておくようにしてください。これにより、仮想クラスターを作成する前に AWS CLI のセットアップなどのツールを取得できます。開始時に役立つ他のテンプレートについては、GitHub の「[EMR Containers Best Practices Guide](https://aws.github.io/aws-emr-containers-best-practices/)」を参照してください。

セットアップ手順の次の情報が必要になります。
+ Amazon EMR に登録された Amazon EKS クラスターおよび Kubernetes 名前空間の仮想クラスター ID
**重要**  
EKS クラスターを作成する際は、m5.xlarge をインスタンスタイプとして使用するか、CPU とメモリがそれよりも高いその他のインスタンスタイプを使用してください。CPU またはメモリが m5.xlarge よりも低いインスタンスタイプを使用すると、クラスターで使用可能なリソースが不足することによるジョブの失敗につながる可能性があります。
+ ジョブの実行に使用する IAM ロールの名前
+ Amazon EMR リリースのリリースラベル (たとえば、`emr-6.4.0-latest` など)
+ ロギングおよびモニタリングの送信先ターゲット:
  + Amazon CloudWatch ロググループ名とログストリームのプレフィックス
  + イベントログとコンテナログを保存する Amazon S3 の場所

**重要**  
Amazon EMR on EKS ジョブでは、モニタリングとログの送信先ターゲットとして Amazon CloudWatch と Amazon S3 を使用します。これらの送信先に送信されるジョブログを表示することで、ジョブの進行状況をモニタリングし、エラーのトラブルシューティングを行うことができます。ログを有効にするには、ジョブの実行の IAM ロールに関連付けられた IAM ポリシーに、ターゲットリソースへのアクセスに必要なアクセス許可が必要です。必要なアクセス許可が IAM ポリシーにない場合は、このサンプルジョブを実行する前に、[ジョブ実行ロールの信頼ポリシーを更新する](setting-up-trust-policy.md)、[Configure a job run to use Amazon S3 logs](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-s3)、および [Configure a job run to use CloudWatch Logs](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-cloudwatch) のステップに従う必要があります。

## Spark アプリケーションの実行
<a name="getting-started-run-spark-app"></a>

次のステップに従って、EKS での Amazon EMR でシンプルな Spark アプリケーションを実行します。Spark Python アプリケーションのアプリケーション `entryPoint` ファイルは、`s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py` にあります。*REGION* は、*us-east-1* など、Amazon EMR on EKS 仮想クラスターが存在するリージョンです。

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

------
#### [ JSON ]

****  

   ```
   {
     "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-bucket",
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket-b",
           "arn:aws:s3:::amzn-s3-demo-bucket-b/*"
         ]
       },
       {
         "Sid": "WriteToLoggingAndOutputDataBuckets",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket-b/*"
         ]
       },
       {
         "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 番目のステートメントである `DescribeAndCreateCloudwatchLogStream` は、Amazon CloudWatch Logs を記述して作成するアクセス許可をジョブに付与します。
   + 4 番目のステートメントである `WriteToCloudwatchLogs` は、*`my_log_stream_prefix`* という名前のログストリームの下にある *`my_log_group_name`* という名前の Amazon CloudWatch ロググループにログを書き込むためのアクセス許可を付与します。

1. Spark Python アプリケーションを実行するには、次のコマンドを使用します。置き換え可能なすべての*赤の斜体で示されている*値を適切な値に置き換えます。*REGION* は、*us-east-1* など、Amazon EMR on EKS 仮想クラスターが存在するリージョンです。

   ```
   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` でジョブ実行を送信する](emr-eks-jobs-submit.md) を参照してください。ジョブ実行パラメータの設定について詳しくは、[ジョブ実行を構成するためのオプション](emr-eks-jobs-CLI.md#emr-eks-jobs-parameters) を参照してください。

1. Spark SQL アプリケーションを実行するには、次のコマンドを使用します。すべての*赤の斜体で示されている*値を適切な値に置き換えます。*REGION* は、*us-east-1* など、Amazon EMR on EKS 仮想クラスターが存在するリージョンです。

   ```
   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` に応じて S3 または CloudWatch のドライバーの stdout ログに表示されます。

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

   ジョブの進行状況をモニタリングしたり、失敗をデバッグしたりするには、Amazon S3、CloudWatch Logs、またはその両方にアップロードされたログを検査します。Amazon S3 のログパスについては、[Configure a job run to use S3 logs](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-s3) を参照してください。CloudWatch Logs については、[Configure a job run to use CloudWatch Logs](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-cloudwatch) を参照してください。CloudWatch Logs でログを表示するには、以下の手順に従います。
   + CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。
   + **ナビゲーション**ペインで **[ログ]** を選択します。次に、**[ロググループ]** を選択します。
   + Amazon EMR on EKS のロググループを選択したら、アップロードされたログイベントを表示します。  
![\[CloudWatch Logs を使用したモニタリング\]](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-on-EKS-DevelopmentGuide/images/emr-on-eks-monitoring.png)

**重要**  
ジョブには[デフォルトで再試行ポリシーが設定](jobruns-using-retry-policies.md#retry-config)されています。構成を変更または無効にする方法については、「[Using job retry policies](jobruns-using-retry-policies.md)」を参照してください。