での Amazon の Spark 演算子EMRの開始方法 EKS - Amazon EMR

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

での Amazon の Spark 演算子EMRの開始方法 EKS

このトピックでは、Spark アプリケーションと Schedule Spark アプリケーションをデプロイEKSして、Amazon で Spark 演算子の使用を開始する方法について説明します。

Spark 演算子をインストールする

Apache Spark 用の Kubernetes 演算子をインストールするには、以下のステップを実行します。

  1. で Amazon の Spark 演算子EMRを設定する EKS」のステップをまだ完了していない場合は完了します。

  2. Helm クライアントを Amazon ECRレジストリに認証します。次のコマンドで、region-id 任意の の値 AWS リージョン、および対応する の値 ECR-registry-account リージョン別の Amazon ECRレジストリアカウント ページから リージョンの 値。

    aws ecr get-login-password \ --region region-id | helm registry login \ --username AWS \ --password-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
  3. 以下のコマンドで Spark 演算子をインストールします。

    Helm チャート--versionパラメータには、emr-プレフィックスと日付サフィックスが削除された Amazon EMRリリースラベルを使用します。例えば、emr-6.12.0-java17-latest リリースでは、6.12.0-java17 を指定します。以下のコマンドの例では emr-7.2.0-latest リリースを使用しているため、Helm チャート --version 用に 7.2.0 を指定しています。

    helm install spark-operator-demo \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/spark-operator \ --set emrContainers.awsRegion=region-id \ --version 7.2.0 \ --namespace spark-operator \ --create-namespace

    デフォルトでは、このコマンドは Spark 演算子のサービスアカウント emr-containers-sa-spark-operator を作成します。別のサービスアカウントを使用するには、引数 serviceAccounts.sparkoperator.name を指定します。例:

    --set serviceAccounts.sparkoperator.name my-service-account-for-spark-operator

    Spark 演算子で垂直的自動スケーリングを使用する場合は、インストールコマンドに以下の行を追加して、演算子にウェブフックを許可します。

    --set webhook.enable=true
  4. helm list コマンドで Helm チャートをインストールしたことを確認します。

    helm list --namespace spark-operator -o yaml

    helm list コマンドは、新しくデプロイした Helm チャートのリリース情報を返します。

    app_version: v1beta2-1.3.8-3.1.1 chart: spark-operator-7.2.0 name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC
  5. 必要な追加オプションを指定してインストールを完了します。詳細については、「」のspark-on-k8s-operatorドキュメントを参照してください GitHub。

Spark アプリケーションの実行

Spark 演算子は Amazon 6.10.0 EMR 以降でサポートされています。Spark 演算子をインストールすると、Spark アプリケーションを実行するサービスアカウント emr-containers-sa-spark がデフォルトで作成されます。Amazon 6.10.0 以降EMRで Spark 演算子を使用して Spark EKS アプリケーションを実行するには、次のステップに従います。

  1. Spark 演算子を使用して Spark アプリケーションを実行する前に、で Amazon の Spark 演算子EMRを設定する EKS および Spark 演算子をインストールする のステップを完了してください。

  2. 以下の例の内容で SparkApplication 定義ファイル spark-pi.yaml を作成します。

    apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: spark-operator spec: type: Scala mode: cluster image: "895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.10.0:latest" imagePullPolicy: Always mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///usr/lib/spark/examples/jars/spark-examples.jar" sparkVersion: "3.3.1" restartPolicy: type: Never volumes: - name: "test-volume" hostPath: path: "/tmp" type: Directory driver: cores: 1 coreLimit: "1200m" memory: "512m" labels: version: 3.3.1 serviceAccount: emr-containers-sa-spark volumeMounts: - name: "test-volume" mountPath: "/tmp" executor: cores: 1 instances: 1 memory: "512m" labels: version: 3.3.1 volumeMounts: - name: "test-volume" mountPath: "/tmp"
  3. 次に、以下のコマンドを使用して、Spark アプリケーションを送信します。これにより、spark-pi という名前の SparkApplication オブジェクトも作成されます。

    kubectl apply -f spark-pi.yaml
  4. 次のコマンドで SparkApplication オブジェクトのイベントがないか確認します。

    kubectl describe sparkapplication spark-pi --namespace spark-operator

Spark 演算子を使用して Spark にアプリケーションを送信する方法の詳細については、「」のspark-on-k8s-operatorドキュメントのSparkApplicationの使用」を参照してください GitHub。

ストレージに Amazon S3 を使用する

Amazon S3 をファイルストレージオプションとして使用するには、次の設定をYAMLファイルに追加します。

hadoopConf: # EMRFS filesystem fs.s3.customAWSCredentialsProvider: com.amazonaws.auth.WebIdentityTokenCredentialsProvider fs.s3.impl: com.amazon.ws.emr.hadoop.fs.EmrFileSystem fs.AbstractFileSystem.s3.impl: org.apache.hadoop.fs.s3.EMRFSDelegate fs.s3.buffer.dir: /mnt/s3 fs.s3.getObject.initialSocketTimeoutMilliseconds: "2000" mapreduce.fileoutputcommitter.algorithm.version.emr_internal_use_only.EmrFileSystem: "2" mapreduce.fileoutputcommitter.cleanup-failures.ignored.emr_internal_use_only.EmrFileSystem: "true" sparkConf: # Required for EMR Runtime spark.driver.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.driver.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native spark.executor.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.executor.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native

Amazon EMRリリース 7.2.0 以降を使用している場合、設定はデフォルトで含まれます。その場合は、Spark アプリケーションファイルs3://<bucket_name>/<file_path>local://<file_path>ではなく、YAMLファイルパスを に設定することができます。

次に、通常どおり Spark アプリケーションを送信します。