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 でインタラクティブセッションを実行するには、次の手順を参照してください。
-
SageMaker Jupyter Notebook など、セルフホスト型 Jupyter Notebook またはマネージド型 Jupyter Notebook のいずれかにアクセスできることを確認してください。Jupyter Notebook には sparkmagic
がインストールされている必要があります。 -
Spark 設定
spark.kubernetes.file.upload.path
のバケットを作成します。Spark サービスアカウントにバケットへの読み取りおよび書き込みのアクセス権限があることを確認します。spark サービスアカウントの設定方法の詳細については、「サービスアカウントの IAM ロール (IRSA、IAM roles for service accounts) でアクセス権限を設定する」を参照してください。 -
コマンド
%load_ext sparkmagic.magics
を使用して、Jupyter Notebook に sparkmagic をロードします。 -
コマンド
%manage_spark
を実行して、Jupyter Notebook で Livy エンドポイントを設定します。[エンドポイントを追加] タブを選択して設定された認証タイプを選択し、ノートブックに Livy エンドポイントを追加して [エンドポイントを追加] を選択します。 -
%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_>
" } } -
アプリケーションを送信して Spark コンテキストが作成されるのを待ちます。
-
インタラクティブセッションのステータスをモニタリングするには、次のコマンドを実行します。
curl -s -k -H 'Content-Type: application/json' -X GET
livy-endpoint
/sessions/my-interactive-session
Spark アプリケーションのモニタリング
Livy UI を使用して Spark アプリケーションの進捗状況をモニタリングするには、リンク http://<livy-endpoint>/ui
を使用します。