Amazon EMR on EKS の Apache Livy による Spark アプリケーションの実行 - Amazon EMR

Amazon EMR on EKS の Apache Livy による Spark アプリケーションの実行

Apache Livy で Spark アプリケーションを実行する前に、Amazon EMR on EKS 用の Apache Livy の設定と、Amazon EMR on EKS での Apache Livy の使用開始の手順が完了していることを確認してください。

Apache Livy を使用して、次の 2 種類のアプリケーションを実行できます。

  • バッチセッション – Livy ワークロードの一種で、Spark バッチジョブを送信します。

  • インタラクティブセッション – Livy ワークロードの一種で、Spark クエリを実行するためのプログラムインターフェイスとビジュアルインターフェイスを提供します。

注記

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

バッチセッションの実行

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

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.3.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

インタラクティブセッションの実行

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

  1. SageMaker Jupyter Notebook など、セルフホスト型 Jupyter Notebook またはマネージド型 Jupyter Notebook のいずれかにアクセスできることを確認してください。Jupyter Notebook には sparkmagic がインストールされている必要があります。

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

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

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

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

    { "conf": { "spark.kubernetes.namespace": "livy-namespace", "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.3.0:latest", "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>", "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>" } }
  6. アプリケーションを送信して Spark コンテキストが作成されるのを待ちます。

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

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

Spark アプリケーションのモニタリング

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