このトピックでは、Alibaba Cloud アカウントで E-MapReduce (EMR) コンソールにログインし、EMR on ACK クラスターを作成して、ジョブを実行する方法について説明します。
注意事項
-
コードの実行環境の管理と設定は、お客様の責任となります。
-
このトピックの例では、JAR ファイルはイメージに直接パッケージ化されています。独自の JAR ファイルを使用する場合は、Object Storage Service (OSS) にアップロードできます。詳細については、「簡易アップロード」をご参照ください。
コマンド内の
local:///opt/spark/examples/spark-examples.jarを、ご利用の JAR ファイルの OSS パスに置き換えてください。パスのフォーマットはoss://<yourBucketName>/<path>.jarです。
前提条件
EMR on ACK クラスターを作成する前に、Container Service for Kubernetes (ACK) コンソール で次の手順を実行してください。
-
Kubernetes クラスターを作成してください。詳細については、「ACK 専用クラスターの作成 (新規インスタンスは利用不可)」または「ACK マネージドクラスターの作成」をご参照ください。
-
AliyunOSSFullAccess と AliyunDLFFullAccess ポリシーをアタッチしてください。詳細については、「OSS と DLF のポリシーを付与」をご参照ください。
JAR ファイルを OSS に保存するには、まず OSS を有効化する必要があります。詳細については、「OSS の有効化」をご参照ください。
ステップ 1:ロール権限の付与
EMR on ACK を使用する前に、EMR on ACK コンソールで、Alibaba Cloud アカウントに AliyunEMROnACKDefaultRole システムデフォルトロールを付与してください。詳細については、「Alibaba Cloud アカウントへのロール権限の付与」をご参照ください。
ステップ 2:クラスターの作成
Kubernetes 上に Spark クラスターを作成してください。クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。
-
EMR on ACK コンソール にログインします。
-
EMR on ACK ページで、Create Cluster をクリックします。
-
[E-MapReduce on ACK] ページで、クラスターのパラメーターを設定します。
パラメーター
例
説明
[Region]
中国 (杭州)
クラスターがデプロイされるリージョン。クラスターの作成後にリージョンを変更することはできません。
[Cluster Type]
Spark
ETL、オフラインバッチ処理、データモデリングなどの機能を提供する、汎用の分散型ビッグデータ処理エンジン。
重要Spark クラスターを作成後、シャッフルサービスクラスターに関連付ける場合、プロダクトのメジャーバージョンを、関連付けるシャッフルサービスクラスターのバージョンと一致させる必要があります。たとえば、EMR-5.x-ack の Spark クラスターは、EMR-5.x-ack のシャッフルサービスクラスターにのみ関連付けることができます。
[Product Version]
EMR-5.6.0-ack
デフォルトで最新のソフトウェアバージョンが使用されます。
[Component Version]
SPARK (3.2.1)
選択したクラスタータイプで利用可能なコンポーネントとそのバージョン。
[ACK クラスター]
Emr-ack
既存の ACK クラスターを選択するか、ACK コンソールで作成してください。
重要1 つの ACK クラスターを、同じタイプの複数の EMR on ACK クラスターに関連付けることはできません。
OSS バケット
oss-spark-test
既存のバケットを選択するか、OSS コンソールで作成してください。
[クラスター名]
Emr-Spark
クラスターの名前。長さは 1~64 文字で、漢字、英字、数字、ハイフン (-)、アンダースコア (_) を使用できます。
-
create をクリックします。
ステータスが Running に変わると、クラスターが作成されます。
ステップ 3:ジョブの送信
このセクションでは、カスタムリソース定義 (CRD) を使用して Spark ジョブを送信する方法について説明します。Spark の詳細については、オープンソースの「Quick Start」ドキュメントを参照し、適切な言語とバージョンを選択してください。
ジョブの送信に関する詳細については、次のトピックをご参照ください。
kubectl を使用して Alibaba Cloud Container Service for Kubernetes(ACK)クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」をご参照ください。
spark-pi.yaml という名前のジョブファイルを作成します。次のコードは、ファイルの内容を示しています。
apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi-simple spec: type: Scala sparkVersion: 3.2.1 mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar" arguments: - "1000" driver: cores: 1 coreLimit: 1000m memory: 4g executor: cores: 1 coreLimit: 1000m memory: 8g memoryOverhead: 1g instances: 1コードのフィールドの詳細については、「spark-on-k8s-operator」を参照してください。
説明カスタムファイル名を指定できます。この例では、spark-pi.yaml が使用されています。
この例では、EMR V5.6.0 用の Spark 3.2.1 が使用されています。別のバージョンの Spark を使用する場合は、ビジネス要件に基づいて sparkVersion パラメータを設定します。
ジョブを送信するには、次のコマンドを実行します。
kubectl apply -f spark-pi.yaml --namespace <Namespace in which the cluster resides><Namespace in which the cluster resides>は、ビジネス要件に基づいて名前空間に置き換えます。名前空間を表示するには、EMR コンソールにログインし、[クラスタの詳細] タブに移動します。次の情報が返されます。
sparkapplication.sparkoperator.k8s.io/spark-pi-simple created説明spark-pi-simpleは、送信された Spark ジョブの名前です。オプション。 [ジョブの詳細] タブで、送信された Spark ジョブに関する情報を表示します。
(オプション) ステップ 4:クラスターのリリース
クラスターが不要になった場合は、コストを削減するためにクラスターをリリースしてください。
-
EMR on ACK ページでクラスターを見つけ、[Actions] 列の 削除済み をクリックします。
-
Release Cluster ダイアログボックスで、OK をクリックします。
関連ドキュメント
-
クラスターの概要:クラスター情報の表示。
-
クラスターのジョブ:ジョブ一覧の表示。