

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

# チュートリアル: Amazon EMR の使用開始
<a name="emr-gs"></a>

Amazon EMR クラスターを迅速にセットアップし、Spark アプリケーションを実行するワークフローについて、順を追って説明します。

## Amazon EMR クラスターを設定する
<a name="emr-getting-started-overview"></a>

Amazon EMR を使用すると、ビッグデータフレームワークを使用してデータを処理および分析するクラスターをわずか数分でセットアップできます。このチュートリアルでは、Spark を使用してサンプルクラスターを起動する方法と、Amazon S3 バケットに格納された単純な PySpark スクリプトを実行する方法について説明します。計画と設定、管理、およびクリーンアップという 3 つの主要なワークフローカテゴリにおける Amazon EMR の必須タスクを取り上げます。

チュートリアルの途中には詳細なトピックへのリンクがあります。また、「[次の手順](#emr-gs-next-steps)」セクションに追加手順の概要が記載されています。ご質問や不明点がある場合は、[ディスカッションフォーラム](https://forums.aws.amazon.com/forum.jspa?forumID=52)に投稿して Amazon EMR チームにお問い合わせください。

![計画と設定、管理、およびクリーンアップの 3 つの主要なワークフローカテゴリの概要を示す Amazon EMR のワークフロー図。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/emr-workflow.png)


**前提条件**
+ Amazon EMR クラスターを起動する前に、「[Amazon EMR を設定する前に](emr-setting-up.md)」のタスクを完了していることを確認してください。

**Cost**
+ 作成するサンプルクラスターは、ライブ環境で実行されます。クラスターには最低料金が発生します。追加料金が発生しないように、このチュートリアルの最後の手順で必ずクリーンアップタスクを完了してください。料金は、Amazon EMR の料金に従って秒単位で発生します。料金はリージョンによっても異なります。詳細については、「[Amazon EMR の料金](https://aws.amazon.com/emr/pricing)」を参照してください。
+ Amazon S3 に保存する小さなファイルについて、最低料金が発生する場合があります。 AWS 無料利用枠の使用制限内であれば、Amazon S3 の一部またはすべての料金が免除される場合があります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing)」と「[AWS 無料利用枠](https://aws.amazon.com/free/)」を参照してください。

## ステップ 1: データリソースを構成して、Amazon EMR クラスターを起動する
<a name="emr-getting-started-plan-and-configure"></a>

### Amazon EMR 用のストレージを準備する
<a name="emr-getting-started-prepare-storage"></a>

Amazon EMR を使用するときに、入力データ、出力データ、およびログファイルの保存先をさまざまなファイルシステムから選択できます。このチュートリアルでは、EMRFS を使用して S3 バケットにデータを保存します。EMRFS は、Amazon S3 に対する通常のファイルの読み書きを可能にする Hadoop ファイルシステムの実装です。詳細については、「[Amazon EMR でのストレージおよびファイルシステムの使用](emr-plan-file-systems.md)」を参照してください。

このチュートリアル用にバケットを作成するには、「*Amazon Simple Storage Service ユーザーガイド*」の「[S3 バケットを作成する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)」に従ってください。Amazon EMR クラスターを起動する予定のリージョンと同じ AWS リージョンにバケットを作成します。たとえば、米国西部 (オレゴン) の us-west-2 です。

Amazon EMR で使用するバケットとフォルダには次の制限があります。
+ 名前に使用できるのは、小文字、数字、ピリオド (.)、およびハイフン (-) のみです。
+ 名前の末尾を数字にすることはできません。
+ バケット名は*すべての AWS アカウントで*一意である必要があります。
+ 出力フォルダは空である必要があります。

### Amazon EMR の入力データを使用してアプリケーションを準備する
<a name="emr-getting-started-prepare-app"></a>

Amazon EMR のアプリケーションを準備する最も一般的な方法は、アプリケーションとその入力データを Amazon S3 にアップロードすることです。次に、クラスターに作業内容を送信するときに、スクリプトとデータを保存する Amazon S3 の場所を指定します。

このステップでは、サンプルの PySpark スクリプトを Amazon S3 バケットにアップロードします。使用する PySpark スクリプトは用意されています。このスクリプトは食品施設の検査データを処理し、S3 バケットに結果ファイルを返します。結果ファイルには、「赤」タイプの違反が最も多い上位 10 施設がリストされます。

PySpark スクリプトで処理するサンプル入力データも Amazon S3 にアップロードします。入力データは、ワシントン州キング郡にある保健局の 2006～2020 年の検査結果の修正版です。詳細については、「[King County Open Data: Food Establishment Inspection Data](https://data.kingcounty.gov/Health-Wellness/Food-Establishment-Inspection-Data/f29f-zza5)」を参照してください。このチュートリアルのレストランデータは、非常に大きなファイルのため、キング郡のウェブサイトから直接ダウンロードしないでください。チュートリアルを完了するのに役立つように、レコード数が少ないファイルを含むダウンロードを以下に示します。データセットのサンプル行を次に示します。

```
name,inspection_result,inspection_closed_business,violation_type,violation_points
100 LB CLAM,Unsatisfactory,FALSE,BLUE,5
100 PERCENT NUTRICION,Unsatisfactory,FALSE,BLUE,5
7-ELEVEN #2361-39423A,Complete,FALSE,,0
```

**EMR 用の PySpark スクリプト例を準備するには**

1. 以下のコード例を任意のエディタの新しいファイルにコピーします。

   ```
   import argparse
   
   from pyspark.sql import SparkSession
   
   def calculate_red_violations(data_source, output_uri):
       """
       Processes sample food establishment inspection data and queries the data to find the top 10 establishments
       with the most Red violations from 2006 to 2020.
   
       :param data_source: The URI of your food establishment data CSV, such as 's3://amzn-s3-demo-bucket/food-establishment-data.csv'.
       :param output_uri: The URI where output is written, such as 's3://amzn-s3-demo-bucket/restaurant_violation_results'.
       """
       with SparkSession.builder.appName("Calculate Red Health Violations").getOrCreate() as spark:
           # Load the restaurant violation CSV data
           if data_source is not None:
               restaurants_df = spark.read.option("header", "true").csv(data_source)
   
           # Create an in-memory DataFrame to query
           restaurants_df.createOrReplaceTempView("restaurant_violations")
   
           # Create a DataFrame of the top 10 restaurants with the most Red violations
           top_red_violation_restaurants = spark.sql("""SELECT name, count(*) AS total_red_violations 
             FROM restaurant_violations 
             WHERE violation_type = 'RED' 
             GROUP BY name 
             ORDER BY total_red_violations DESC LIMIT 10""")
   
           # Write the results to the specified output URI
           top_red_violation_restaurants.write.option("header", "true").mode("overwrite").csv(output_uri)
   
   if __name__ == "__main__":
       parser = argparse.ArgumentParser()
       parser.add_argument(
           '--data_source', help="The URI for you CSV restaurant data, like an S3 bucket location.")
       parser.add_argument(
           '--output_uri', help="The URI where output is saved, like an S3 bucket location.")
       args = parser.parse_args()
   
       calculate_red_violations(args.data_source, args.output_uri)
   ```

1. `health_violations.py` という名前でファイルを保存します。

1. `health_violations.py` を、このチュートリアル用に作成した Amazon S3 のバケットにアップロードします。手順については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットにオブジェクトをアップロードする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket)」を参照してください。

**EMR 用のサンプル入力データを準備するには**

1. zip ファイル [food\_establishment\_data.zip](samples/food_establishment_data.zip) をダウンロードします。

1. `food_establishment_data.zip` を解凍し、ご使用のマシンに `food_establishment_data.csv` として保存します。

1. この CSV ファイル を、このチュートリアル用に作成した S3 バケットにアップロードします。手順については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットにオブジェクトをアップロードする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket)」を参照してください。

EMR 用データのセットアップに関する詳細は、「[Amazon EMR で処理する入力データを準備する](emr-plan-input.md)」を参照してください。

### Amazon EMR クラスターを起動する
<a name="emr-getting-started-launch-sample-cluster"></a>

ストレージの場所とアプリケーションを準備したら、サンプルの Amazon EMR クラスターを起動できます。このステップでは、最新の [Amazon EMR リリースバージョン](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)を使用して、Apache Spark クラスターを起動します。

------
#### [ Console ]

**コンソールを使用し、Spark がインストールされた状態でクラスターを起動するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で、**[クラスター]** を選択し、**[クラスターの作成]** を選択します

1. **[クラスターの作成]** ページで、**[リリース]**、**[インスタンスタイプ]**、**[インスタンス数]**、および **[アクセス許可]** のデフォルト値を書き留めます。これらのフィールドには、汎用クラスターで機能する値が自動的に入力されます。

1. **[クラスター名]** フィールドに、クラスターを識別しやすい一意のクラスター名 ({{My first cluster}} など) を入力します。クラスター名に <、>、$、\|、` (バックティック) の文字を含めることはできません。

1. **[アプリケーション]** で、**[Spark]** オプションをクリックして、クラスターに Spark をインストールします。
**注記**  
Amazon EMR クラスターを起動する前に、クラスターで必要なアプリケーションを選択してください。起動後は、クラスターに対するアプリケーションの追加や削除はできません。

1. **[クラスターログ]** で、[クラスター固有のログを Amazon S3 に公開] チェックボックスを選択します。**[Amazon S3 ロケーション]** の値は、作成した Amazon S3 バケットに置き換え、その後に **/logs** を追加します。例えば、**s3://amzn-s3-demo-bucket/logs**。**/logs** を追加すると、バケットに「logs」という新しいフォルダが作成されます。Amazon EMR によってここにクラスターのログファイルがコピーされます。

1. **[セキュリティ設定とアクセス許可]** で、**[EC2 キーペア]** を選択します。同じセクションで、**[Amazon EMR のサービスロール]** ドロップダウンメニューを選択し、**[EMR\_DefaultRole]** を選択します。次に、**[インスタンスプロファイルの IAM ロール]** ドロップダウンメニューを選択し、**[EMR\_EC2\_DefaultRole]** を選択します。

1. **[クラスターの作成]** を選択して、クラスターを起動し、クラスターの詳細ページを開きます。

1. クラスター名の横のクラスターの **[ステータス]** を見つけます。Amazon EMR によるクラスターのプロビジョニングに伴って、ステータスが **[開始中]** から **[実行中]**に、そして **[待機中]** に変わります。ステータスの更新を確認するには、右側にある更新アイコンを選択するか、ブラウザを更新する必要があります。

クラスターが起動して実行中になり、作業を受け付ける準備ができると、ステータスが **[待機中]** に変わります。クラスターの概要の読み込みの詳細については、「[Amazon EMR クラスターステータスと詳細の表示](emr-manage-view-clusters.md)」を参照してください。クラスターのステータスの詳細については、「[クラスターライフサイクルについて](emr-overview.md#emr-overview-cluster-lifecycle)」を参照してください。

------
#### [ CLI ]

**でインストールされた Spark でクラスターを起動するには AWS CLI**

1. 以下のコマンドを使用して、クラスターの作成に使用できる IAM のデフォルトロールを作成します。

   ```
   aws emr create-default-roles
   ```

   `create-default-roles` に関する詳細は、「[AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/emr/create-default-roles.html)」を参照してください。

1. 次のコマンドを使用して Spark クラスターを作成します。`--name` オプションを使用してクラスターの名前を入力し、`--ec2-attributes` オプションを使用して EC2 キーペアの名前を指定します。

   ```
   aws emr create-cluster \
   --name {{"<My First EMR Cluster>"}} \
   --release-label {{<emr-5.36.2>}} \
   --applications Name=Spark \
   --ec2-attributes KeyName={{<myEMRKeyPairName>}} \
   --instance-type m5.xlarge \
   --instance-count 3 \
   --use-default-roles
   ```

   その他の必須値 `--instance-type`、`--instance-count`、および `--use-default-roles` にも注意してください。これらの値は、汎用クラスター向けに選択されています。`create-cluster` に関する詳細は、「[AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html)」を参照してください。
**注記**  
読みやすくするために、Linux 行連続文字 (\\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

   次のような出力が表示されます。新しいクラスターの `ClusterId` と `ClusterArn` が出力に表示されます。`ClusterId` を書き留めてください。`ClusterId` は、クラスターのステータスの確認と、作業の送信に使用します。

   ```
   {
       "ClusterId": "{{myClusterId}}",
       "ClusterArn": "{{myClusterArn}}"
   }
   ```

1. 次のコマンドを使用して、クラスターのステータスを確認します。

   ```
   aws emr describe-cluster --cluster-id {{<myClusterId>}}						
   ```

   新しいクラスター用のオブジェクト `Status` がある次のような出力が表示されます。

   ```
   {
       "Cluster": {
           "Id": "{{myClusterId}}",
           "Name": "{{My First EMR Cluster}}",
           "Status": {
               "State": "STARTING",
               "StateChangeReason": {
                   "Message": "Configuring cluster software"
               }
           }
        }
   }
   ```

   Amazon EMR によるクラスターのプロビジョニングに伴って、`State` 値が `STARTING` から `RUNNING` に、そして `WAITING` に変わります。

クラスターが起動して実行中になり、作業を受け付ける準備ができると、ステータスが `WAITING` に変わります。クラスターのステータスの詳細については、「[クラスターライフサイクルについて](emr-overview.md#emr-overview-cluster-lifecycle)」を参照してください。

------

## ステップ 2: 作業を Amazon EMR クラスターに送信する
<a name="emr-getting-started-manage"></a>

### 作業を送信して結果を表示する
<a name="emr-getting-started-submit-spark-step"></a>

クラスターを起動したら、データを処理して分析するために、実行中のクラスターに作業を送信できます。作業は、*ステップ*として Amazon EMR クラスターに送信します。ステップとは、1 つ以上のアクションで構成される作業の単位です。たとえば、値の計算や、データの転送と処理のためにステップを送信することが考えられます。ステップは、クラスターの起動時にも、実行中のクラスターに対しても送信できます。チュートリアルのこの部分では、実行中のクラスターにステップとして `health_violations.py` を送信します。ステップの詳細については、「[作業を Amazon EMR クラスターに送信する](emr-work-with-steps.md)」を参照してください。

------
#### [ Console ]

**コンソールを使用してステップとして Spark アプリケーションを送信するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で **[クラスター]** を選択し、作業を送信するクラスターを選択します。クラスターの状態は **[待機中]** である必要があります。

1. **[ステップ]** タブを選択し、**[ステップの追加]** を選択します。

1. 次のガイドラインに従ってステップを設定します。
   + **[タイプ]** で、**[Spark アプリケーション]** を選択します。**[デプロイモード]**、**[アプリケーションの場所]**、および **[Spark-submit オプション]** のフィールドが追加で表示されます。
   + **[名前]** に新しい名前を入力します。クラスターに多数のステップがある場合は、それぞれに名前を付けると追跡しやすくなります。
   + **[デプロイモード]** は、デフォルト値 **[クラスターモード]** のままにします。Spark のデプロイモードの詳細については、Apache Spark ドキュメントの「[Cluster Mode Overview](https://spark.apache.org/docs/latest/cluster-overview.html)」を参照してください。
   + **[アプリケーションの場所]** には、Amazon S3 内の `health_violations.py` スクリプトの場所を入力します ({{s3://amzn-s3-demo-bucket/health\_violations.py}} など)。
   + **[Spark-submit オプション]** フィールドは空白のままにします。`spark-submit` オプションの詳細については、「[Launching applications with spark-submit](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit)」を参照してください。
   + **[引数]** フィールドに、次の引数と値を入力します。

     ```
     --data_source {{s3://amzn-s3-demo-bucket/food_establishment_data.csv}}
     --output_uri {{s3://amzn-s3-demo-bucket/myOutputFolder}}
     ```

     {{s3://amzn-s3-demo-bucket/food\_establishment\_data.csv}} を「[Amazon EMR の入力データを使用してアプリケーションを準備する](#emr-getting-started-prepare-app)」で準備した入力データの S3 バケット URI に置き換えます。

     {{amzn-s3-demo-bucket}} をこのチュートリアル用に作成したバケットの名前に、{{myOutputFolder}} をクラスター出力フォルダの名前に置き換えます。
   + **[ステップが失敗した場合のアクション]** では、デフォルトのオプション **[続行]** を使用します。これにより、ステップが失敗してもクラスターは引き続き実行されます。

1. **[追加]** を選択して、ステップを送信します。ステップが、**[保留中]** というステータスでコンソールに表示されます。

1. ステップのステータスをモニタリングします。**[保留中]** から **[実行中]**、**[完了]** に変わります。コンソール内のステータスを更新するには、**[フィルター]** の右にある更新アイコンを選択します。スクリプトの実行には約 1 分間かかります。ステータスが **[完了済み]** に変わると、ステップは正常に完了しています。

------
#### [ CLI ]

**を使用して Spark アプリケーションをステップとして送信するには AWS CLI**

1. 「[Amazon EMR クラスターを起動する](#emr-getting-started-launch-sample-cluster)」で起動したクラスターの `ClusterId` がわかっていることを確認します。次のコマンドを使用して、クラスター ID を取得することもできます。

   ```
   aws emr list-clusters --cluster-states WAITING							
   ```

1.  `add-steps` コマンドで `ClusterId` を指定して、ステップとして `health_violations.py` を送信します。
   + ステップの名前を指定するには、{{"My Spark Application"}} を置き換えます。`Args` 配列の {{s3://amzn-s3-demo-bucket/health\_violations.py}} を `health_violations.py` アプリケーションの場所に置き換えます。
   + {{s3://amzn-s3-demo-bucket/food\_establishment\_data.csv}} を `food_establishment_data.csv` データセットの S3 の場所に置き換えます。
   + {{s3://amzn-s3-demo-bucket/MyOutputFolder}} を、指定したバケットの S3 パスとクラスター出力フォルダの名前に置き換えます。
   + `ActionOnFailure=CONTINUE` は、ステップが失敗してもクラスターを引き続き実行することを指定します。

   ```
   aws emr add-steps \
   --cluster-id {{<myClusterId>}} \
   --steps Type=Spark,Name={{"<My Spark Application>"}},ActionOnFailure=CONTINUE,Args=[{{<s3://amzn-s3-demo-bucket/health_violations.py>}},--data_source,{{<s3://amzn-s3-demo-bucket/food_establishment_data.csv>}},--output_uri,{{<s3://amzn-s3-demo-bucket/MyOutputFolder>}}]
   ```

   CLI を使用したステップの送信の詳細については、「[AWS CLI コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/emr/add-steps.html)」を参照してください。

   ステップを送信すると、`StepIds` がリストされた次のような出力が表示されます。ステップを 1 つ送信したので、1 つの ID のみがリストされます。ステップ ID をコピーします。ステップ ID は、ステップのステータスを確認するために使用します。

   ```
   {
       "StepIds": [
           "s-1XXXXXXXXXXA"
       ]
   }
   ```

1. `describe-step` コマンドを使用して、ステップのステータスのクエリを実行します。

   ```
   aws emr describe-step --cluster-id {{<myClusterId>}} --step-id {{<s-1XXXXXXXXXXA>}}							
   ```

   ステップに関する情報が記載された、次のような出力が表示されます。

   ```
   {
       "Step": {
           "Id": "s-1XXXXXXXXXXA",
           "Name": "My Spark Application",
           "Config": {
               "Jar": "command-runner.jar",
               "Properties": {},
               "Args": [
                   "spark-submit",
                   "s3://amzn-s3-demo-bucket/health_violations.py",
                   "--data_source",
                   "s3://amzn-s3-demo-bucket/food_establishment_data.csv",
                   "--output_uri",
                   "s3://amzn-s3-demo-bucket/myOutputFolder"
               ]
           },
           "ActionOnFailure": "CONTINUE",
           "Status": {
               "State": "COMPLETED"
           }
       }
   }
   ```

   ステップの `State` は、ステップの実行に伴って `PENDING` から `RUNNING`、さらには `COMPLETED` へと変わります。このステップの実行には約 1 分間かかるため、ステータスを数回確認することが必要な場合があります。

`State` が `COMPLETED` に変わることで、ステップが正常に終了したことがわかります。

------

ステップのライフサイクルに関する詳細は、「[ステップの実行によるデータの処理](emr-overview.md#emr-overview-steps)」を参照してください。

### 結果を表示する
<a name="emr-getting-started-view-results"></a>

ステップが正常に実行されると、Amazon S3 の出力フォルダで出力結果を表示できます。

**`health_violations.py` の結果を表示するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. **[バケット名]** を選択し、次に、ステップの送信時に指定した出力フォルダを選択します。例えば、{{amzn-s3-demo-bucket}} と {{myOutputFolder}}。

1. 出力フォルダーに次の項目が表示されることを確認します。
   + `_SUCCESS` という名前の小さなサイズのオブジェクト。
   + 結果が含まれている、プレフィックス `part-` で始まる CSV ファイル。

1. 結果を含むオブジェクトを選択し、**[ダウンロード]** をクリックして結果をローカルファイルシステムに保存します。

1. 任意のエディタで、結果を開きます。出力ファイルには、赤の違反が最も多い上位 10 施設がリストされます。出力ファイルには、各施設に対する赤の違反の総数も表示されます。

   `health_violations.py` 結果の例を次に示します。

   ```
   name, total_red_violations
   SUBWAY, 322
   T-MOBILE PARK, 315
   WHOLE FOODS MARKET, 299
   PCC COMMUNITY MARKETS, 251
   TACO TIME, 240
   MCDONALD'S, 177
   THAI GINGER, 153
   SAFEWAY INC #1508, 143
   TAQUERIA EL RINCONSITO, 134
   HIMITSU TERIYAKI, 128
   ```

Amazon EMR クラスターの出力に関する詳細は、「[Amazon EMR クラスター出力の場所を設定する](emr-plan-output.md)」を参照してください。

### (オプション) 実行中の Amazon EMR クラスターに接続する
<a name="emr-getting-started-connect-to-cluster"></a>

Amazon EMR を使用する際に、ログファイルの読み取り、クラスターのデバッグ、または Spark シェルなどの CLI ツールの使用のために、実行中のクラスターへの接続が必要になることがあります。Amazon EMR では、Secure Shell (SSH) プロトコルを使用してクラスターに接続できます。このセクションでは、SSH の設定、クラスターへの接続、および Spark のログファイルの表示を行う方法について説明します。クラスターへの接続に関する詳細は、「[Amazon EMR クラスターノードへのアクセス認証](emr-authenticate-cluster-connections.md)」を参照してください。

#### クラスターへの SSH 接続を許可する
<a name="emr-getting-started-restrict-ssh"></a>

クラスターに接続する前に、インバウンド SSH 接続を許可するようにクラスターセキュリティグループを変更する必要があります。Amazon EC2 セキュリティグループは、クラスターへのインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールとして機能します。このチュートリアルのためにクラスターを作成したとき、Amazon EMR によって次のセキュリティグループが作成されました。

**ElasticMapReduce-master**  
プライマリノードに関連付けられているデフォルトの Amazon EMR マネージドセキュリティグループ。Amazon EMR クラスターでは、プライマリノードは、クラスターを管理する Amazon EC2 インスタンスです。

**ElasticMapReduce-slave**  
コアノードとタスクノードに関連付けられているデフォルトのセキュリティグループ。

------
#### [ Console ]

**コンソールでプライマリセキュリティグループの信頼できるソースへの SSH アクセスを許可するには**

セキュリティグループを編集するには、クラスターが存在する VPC のセキュリティグループを管理する権限が必要です。詳細については、「*IAM ユーザーガイド*」の「[ユーザーのアクセス許可の変更](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html)」と、EC2 セキュリティグループを管理できるようにする「[ポリシーの例](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_examples_ec2_securitygroups-vpc.html)」を参照してください。

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で **[クラスター]** を選択し、更新するクラスターを選択します。選択すると、クラスターの詳細ページが開きます。このページの **[プロパティ]** タブは事前に選択されます。

1. **[プロパティ]** タブの **[ネットワーク]** で、**[EC2 セキュリティグループ (ファイアウォール)]** の横にある矢印を選択してこのセクションを展開します。**[プライマリノード]** で、セキュリティグループリンクを選択します。以下の手順を完了したら、必要に応じてこのステップに戻り、**[コアノードとタスクノード]** を選択し、以下の手順を繰り返して SSH クライアントがコアノードとタスクノードにアクセスできるようにします。

1. これにより、EC2 コンソールが開きます。**[Inbound rules]** (インバウンドルール) タブを選択し、**[Edit inbound rules]** (インバウンドルールの編集) を選択します。

1. 次の設定で、パブリックアクセスを許可するインバウンドルールを確認します。存在する場合は、**[Delete]** (削除) をクリックして削除します。
   + **タイプ**

     SSH
   + **[ポート]**

     22
   + **ソース**

     Custom 0.0.0.0/0
**警告**  
2020 年 12 月以前は、ElasticMapReduce-master セキュリティグループには、ポート 22 ですべての送信元からのインバウンドトラフィックを許可するルールが事前に設定されていました。このルールは、マスターノードへの最初の SSH 接続を簡素化するために作成されたものです。このインバウンドルールを削除して、信頼できる送信元のみにトラフィックを制限することを強くお勧めします。

1. ルールのリストの下部までスクロールし、**[Add Rule]** (ルールの追加) を選択します。

1. [**Type (タイプ)**] で、[**SSH**] を選択します。SSH を選択すると、**[Protocol]** (プロトコル) に **[TCP]** が、**[Port Range]** (ポート範囲) に **[22]** が自動的に入力されます。

1. [source] (送信元) には、**[My IP]** (マイ IP) を選択して、IP アドレスを送信元アドレスとして自動的に追加します。**[Custom]** (カスタム) で信頼済みクライアントの IP アドレスの範囲を追加することも、他のクライアントに追加のルールを作成することもできます。多くのネットワーク環境では IP アドレスを動的に割り当てるため、将来的に信頼済みクライアントの IP アドレスを更新することが必要になる場合があります。

1. **[保存]** を選択します。

1. オプションで、**[コアノードとタスクノード]** をリストから選択し、上記の手順を繰り返して、コアノードとタスクノードへの SSH クライアントアクセスを許可します。

------

#### を使用してクラスターに接続する AWS CLI
<a name="emr-getting-started-connect-ssh"></a>

 AWS CLIを使用すると、オペレーティングシステムに関係なく、クラスターへの SSH 接続を作成できます。

**を使用してクラスターに接続し、ログファイルを表示するには AWS CLI**

1. 次のコマンドを使用して、クラスターへの SSH 接続を開きます。{{<mykeypair.key>}} を、キーペアファイルの完全修飾パスとファイル名に置き換えてください。例えば、`C:\Users\<username>\.ssh\mykeypair.pem`。

   ```
   aws emr ssh --cluster-id {{<j-2AL4XXXXXX5T9>}} --key-pair-file {{<~/mykeypair.key>}}						
   ```

1. `/mnt/var/log/spark` に移動して、クラスターのマスターノード上の Spark ログにアクセスします。次に、その場所にあるファイルを表示します。マスターノード上の追加のログファイルのリストについては、「[プライマリノードのログファイルを表示する](emr-manage-view-web-log-files.md#emr-manage-view-web-log-files-master-node)」を参照してください。

   ```
   cd /mnt/var/log/spark
   ls
   ```

### Amazon SageMaker AI Unified Studio を使用して Amazon EMR クラスターを管理する
<a name="emr-getting-started-connect-to-cluster-sagemaker"></a>

 EC2 上の Amazon EMR は、 Amazon SageMaker AI Unified Studio でサポートされているコンピューティングタイプでもあります。 Amazon SageMaker AI Unified Studio [で EC2 リソースで EMR を使用および管理する方法](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/managing-emr-on-ec2.html)については、EC2 での Amazon EMR の管理」を参照してください。

## ステップ 3: Amazon EMR リソースをクリーンアップする
<a name="emr-getting-started-clean-up"></a>

### クラスターを終了する
<a name="emr-getting-started-stop-cluster"></a>

クラスターに作業を送信し、PySpark アプリケーションの結果を表示したので、クラスターを終了できます。クラスターを終了すると、クラスターに関連付けられているすべての Amazon EMR 料金と Amazon EC2 インスタンスが停止します。

クラスターを終了しても、Amazon EMR ではクラスターに関するメタデータが 2 か月間無料で保持されます。アーカイブされたメタデータは、新しいジョブのための[クラスターのクローン作成](clone-console.md)や、参照目的でのクラスター設定への再アクセスに便利です。メタデータには、クラスターが S3 に書き込むデータや、クラスターの HDFS に格納されるデータは含まれ*ません*。

**注記**  
クラスターを終了した後に、Amazon EMR コンソールでリストビューからクラスターを削除することはできません。Amazon EMR によってメタデータがクリアされると、終了したクラスターがコンソールから消えます。

------
#### [ Console ]

**コンソールを使用してクラスターを終了するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. **[クラスター]** を選択し、終了するクラスターを選択します。

1. **[アクション]** ドロップダウンメニューで、**[クラスターの終了]** を選択します。

1. ダイアログボックスで、**[終了]** を選択します。クラスター設定によっては、終了に 5～10 分間かかる場合があります。Amazon EMR クラスターの終了に関する詳細は、「[開始中、実行中、待機中の状態にある Amazon EMR クラスターを終了する](UsingEMR_TerminateJobFlow.md)」を参照してください。

------
#### [ CLI ]

**を使用してクラスターを終了するには AWS CLI**

1. 次のコマンドを使用して、クラスターの終了プロセスを開始します。{{<myClusterId>}} をサンプルクラスターの ID に置き換えます。このコマンドでは、出力は返されません。

   ```
   aws emr terminate-clusters --cluster-ids {{<myClusterId>}}
   ```

1. クラスターの終了プロセスが進行中であることを確認するために、次のコマンドでクラスターのステータスを確認します。

   ```
   aws emr describe-cluster --cluster-id {{<myClusterId>}}									
   ```

   JSON 形式の出力例を次に示します。クラスターの `Status` が **`TERMINATING`** から **`TERMINATED`** に変わります。クラスター設定によっては、終了に 5～10 分間かかる場合があります。Amazon EMR クラスターの終了に関する詳細は、「[開始中、実行中、待機中の状態にある Amazon EMR クラスターを終了する](UsingEMR_TerminateJobFlow.md)」を参照してください。

   ```
   {
       "Cluster": {
           "Id": "j-xxxxxxxxxxxxx",
           "Name": "My Cluster Name",
           "Status": {
               "State": "TERMINATED",
               "StateChangeReason": {
                   "Code": "USER_REQUEST",
                   "Message": "Terminated by user request"
               }
           }
       }
   }
   ```

------

### S3 リソースを削除する
<a name="emr-getting-started-delete-bucket"></a>

追加料金が発生しないように、Amazon S3 バケットを削除する必要があります。バケットを削除すると、このチュートリアル用のすべての Amazon S3 リソースが削除されます。バケットに含まれている内容は次のとおりです。
+ PySpark スクリプト
+ 入力データセット
+ 出力結果フォルダ
+ ログファイルフォルダ

PySpark スクリプトや出力を別の場所に保存した場合は、格納したファイルを削除するために追加の手順が必要になる場合があります。

**注記**  
バケットを削除する前に、クラスターを終了する必要があります。そうしないと、バケットを空にできない可能性があります。

バケットを削除するには、「*Amazon Simple Storage Service ユーザーガイド*」の「[S3 バケットを削除する方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)」に従ってください。

## 次の手順
<a name="emr-gs-next-steps"></a>

これで、最初の Amazon EMR クラスターの起動を最初から最後まで実行しました。ビッグデータアプリケーションの準備と送信、結果の表示、クラスターの終了などの、必須 EMR タスクも完了しました。

以降のトピックでは、Amazon EMR ワークフローをカスタマイズする方法について詳しく説明します。

### Amazon EMR のビッグデータアプリケーションについて調べる
<a name="emr-gs-next-explore-apps"></a>

「[Amazon EMR リリース ガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)」で、クラスターにインストールできるビッグデータアプリケーションを確認し、比較します。リリースガイドには、各 EMR リリースバージョンの詳細と、Amazon EMR で Spark や Hadoop などのフレームワークを使用するためのヒントが記載されています。

### クラスターのハードウェア、ネットワーク、およびセキュリティを計画する
<a name="emr-gs-next-plan-clusters"></a>

このチュートリアルでは、詳細オプションを設定せずにシンプルな EMR クラスターを作成しました。詳細オプションでは、Amazon EC2 インスタンスタイプ、クラスターネットワーク、およびクラスターセキュリティを指定できます。要件を満たすクラスターの計画と起動に関する詳細は、「[Amazon EMR クラスターの計画、設定、起動](emr-plan.md)」と「[Amazon EMR でのセキュリティ](emr-security.md)」を参照してください。

### クラスターを管理する
<a name="emr-gs-next-manage-clusters"></a>

「[Amazon EMR クラスターの管理](emr-manage.md)」で、実行中のクラスターの操作について詳しく説明しています。クラスターを管理するために、クラスターに接続し、ステップをデバッグし、クラスターのアクティビティと状態を追跡できます。[EMR マネージドスケーリング](emr-managed-scaling.md)を使用して、ワークロードの需要に応じてクラスターリソースを調整することもできます。

### 別のインターフェースを使用する
<a name="emr-gs-next-interfaces"></a>

Amazon EMR コンソールに加えて、、ウェブサービス API AWS Command Line Interface、またはサポートされている多数の AWS SDKs のいずれかを使用して Amazon EMR を管理できます。詳細については、「[管理インターフェイス](emr-overview-benefits.md#emr-what-tools)」を参照してください。

Amazon EMR クラスターにインストールされているアプリケーションと、さまざまな方法でやり取りすることもできます。Apache Hadoop のようないくつかのアプリケーションでは、表示可能なウェブインターフェイスを公開しています。詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。

### EMR テクニカルブログを参照する
<a name="emr-gs-next-browse-blogs"></a>

新しい Amazon EMR 機能のサンプルチュートリアルと詳細な技術説明については、「[AWS Big Data Blog](https://aws.amazon.com/blogs/big-data/tag/amazon-emr/)」を参照してください。