

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

# Amazon EMR on EKS の Apache Livy による Spark アプリケーションの実行
<a name="job-runs-apache-livy-run-spark"></a>

Apache Livy で Spark アプリケーションを実行する前に、[Amazon EMR on EKS 用の Apache Livy の設定](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-setup.html)と、[Amazon EMR on EKS での Apache Livy の使用開始](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-install.html)の手順が完了していることを確認してください。

Apache Livy を使用して、次の 2 種類のアプリケーションを実行できます。
+ バッチセッション – Livy ワークロードの一種で、Spark バッチジョブを送信します。
+ インタラクティブセッション – Livy ワークロードの一種で、Spark クエリを実行するためのプログラムインターフェイスとビジュアルインターフェイスを提供します。

**注記**  
さまざまなセッションのドライバーポッドとエグゼキュターポッドが相互に通信できます。名前空間はポッド間のセキュリティを保証しません。Kubernetes では、指定された名前空間内のポッドのサブセットに対する選択的なアクセス権限は許可されません。

## バッチセッションの実行
<a name="job-runs-apache-livy-run-spark-batch"></a>

バッチジョブを送信するには、次のコマンドを使用します。

```
curl -s -k -H 'Content-Type: application/json' -X POST \
      -d '{
            "name": "my-session",
            "file": "entryPoint_location (S3 or local)",
            "args": ["argument1", "argument2", ...],
            "conf": {
                "spark.kubernetes.namespace": "<spark-namespace>",
                "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
                "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>"
            }
          }' <livy-endpoint>/batches
```

バッチジョブをモニタリングするには、次のコマンドを使用します。

```
curl -s -k -H 'Content-Type: application/json' -X GET <livy-endpoint>/batches/my-session
```

## インタラクティブセッションの実行
<a name="job-runs-apache-livy-run-spark-interactive"></a>

Apache Livy でインタラクティブセッションを実行するには、次の手順を参照してください。

1. SageMaker AI Jupyter Notebook など、セルフホスト型 Jupyter Notebook またはマネージド型 Jupyter Notebook のいずれかにアクセスできることを確認してください。Jupyter Notebook には [sparkmagic](https://github.com/jupyter-incubator/sparkmagic/blob/master/README.md) がインストールされている必要があります。

1. Spark 設定 `spark.kubernetes.file.upload.path` のバケットを作成します。Spark サービスアカウントにバケットへの読み取りおよび書き込みのアクセス権限があることを確認します。spark サービスアカウントの設定方法の詳細については、「サービスアカウントの IAM ロール (IRSA、IAM roles for service accounts) でアクセス権限を設定する」を参照してください。

1. コマンド `%load_ext sparkmagic.magics` を使用して、Jupyter Notebook に sparkmagic をロードします。

1. コマンド `%manage_spark` を実行して、Jupyter Notebook で Livy エンドポイントを設定します。**[エンドポイントを追加]** タブを選択して設定された認証タイプを選択し、ノートブックに Livy エンドポイントを追加して **[エンドポイントを追加]** を選択します。

1. `%manage_spark` を再度実行して Spark コンテキストを作成し、**[セッションを作成]** に移動します。Livy エンドポイントを選択し、一意のセッション名を指定して言語を選択し、次のプロパティを追加します。

   ```
   {
     "conf": {
       "spark.kubernetes.namespace": "livy-namespace",
       "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
       "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>", 
       "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>"
     }
   }
   ```

1. アプリケーションを送信して Spark コンテキストが作成されるのを待ちます。

1. インタラクティブセッションのステータスをモニタリングするには、次のコマンドを実行します。

   ```
   curl -s -k -H 'Content-Type: application/json' -X GET livy-endpoint/sessions/my-interactive-session
   ```

## Spark アプリケーションのモニタリング
<a name="job-runs-apache-livy-run-ui"></a>

Livy UI を使用して Spark アプリケーションの進捗状況をモニタリングするには、リンク `http://<livy-endpoint>/ui` を使用します。