Apache DolphinScheduler は、強力な有向非巡回グラフ (DAG) のビジュアルインターフェイスを備えた、分散型で拡張可能なオープンソースのワークフローオーケストレーションプラットフォームです。このガイドでは、DolphinScheduler を E-MapReduce (EMR) Serverless Spark に接続し、DolphinScheduler の Web UI から Java アーカイブ (JAR)、SQL、PySpark の各ジョブを送信する手順を説明します。
背景情報
AliyunServerlessSpark Task Plugin は Apache DolphinScheduler のメインブランチにマージされており、将来の公式リリースで提供される予定です。それまでは、以下の前提条件で説明する方法のいずれかを使用してインストールしてください。
前提条件
開始する前に、以下が準備できていることを確認してください:
-
Java 開発キット (JDK) 1.8 以降がインストールされていること
-
以下のいずれかの方法で AliyunServerlessSpark Task Plugin がインストールされていること:
-
方法 1 (ソースからコンパイル): メインブランチをクローンしてコンパイルします。詳細については、GitHub の apache/dolphinscheduler をご参照ください。
-
方法 2 (cherry-pick): cherry-pick プルリクエスト (PR) を使用して、プラグインをプロジェクトに統合します。詳細については、GitHub の [Feature-16127] Support emr serverless spark #16126 をご参照ください。
-
ステップ 1:データソースの作成
-
DolphinScheduler の Web UI を開き、上部のナビゲーションバーで [Datasource] をクリックします。
-
[Create DataSource] をクリックします。[Choose DataSource Type] ダイアログボックスで、[ALIYUN_SERVERLESS_SPARK] を選択します。
-
[CreateDataSource] ダイアログボックスで、次のパラメーターを設定します:
パラメーター 説明 Datasource Name データソースの名前 Access Key Id ご利用の Alibaba Cloud AccessKey ID Access Key Secret ご利用の Alibaba Cloud AccessKey Secret Region Id ご利用の EMR Serverless Spark ワークスペースが存在するリージョン (例: cn-beijing)。サポートされているリージョンについては、「サポートされているリージョン」をご参照ください。 -
[接続テスト] をクリックします。接続性テストが正常に完了したら、[確認] をクリックします。
ステップ 2:プロジェクトの作成
-
上部のナビゲーションバーで [Project] をクリックします。
-
[プロジェクトの作成] をクリックします。
-
[プロジェクトの作成] ダイアログボックスで、[プロジェクト名]、[ユーザー]、およびその他の必須フィールドを設定します。詳細については、「プロジェクト」をご参照ください。
ステップ 3:ワークフローの作成
-
プロジェクト名をクリックします。左側のナビゲーションウィンドウで、[Workflow] > [Workflow Definition] の順に選択します。
-
[ワークフローの作成] をクリックします。[ワークフロー DAG 編集] ページが開きます。
-
左側のナビゲーションウィンドウで、[ALIYUN_SERVERLESS_SPARK] をキャンバスにドラッグします。
-
[Current node settings] ダイアログボックスで、ジョブタイプに基づいてノードパラメーターを設定し、[Confirm] をクリックします。以下のセクションでは、各ジョブタイプのパラメーターをリストします。まず、3 つのジョブタイプすべてで共通のパラメーターをリストし、その後に各セクションでジョブ固有のパラメーターを説明します。
共通パラメーター
これらのパラメーターは、JAR、SQL、および PySpark ジョブに適用されます。
| パラメーター | 説明 |
|---|---|
| Datasource types | [ALIYUN_SERVERLESS_SPARK] |
| Datasource instances | ステップ 1 で作成したデータソースを選択します |
| workspace id | ご利用の EMR Serverless Spark ワークスペースの ID |
| resource queue id | EMR Serverless Spark ワークスペース内のリソースキューの ID。デフォルト:root_queue |
| is production | ジョブが本番環境で実行される場合は、このトグルを有効にします |
| engine release version | エンジンバージョン。デフォルト:esr-2.1-native (Spark 3.3.1, Scala 2.12, Native Runtime) |
JAR ジョブの送信
[code type] を JAR に設定し、次のパラメーターを設定します:
| パラメーター | 説明 | 例 |
|---|---|---|
| code type | ジョブタイプ | JAR |
| job name | EMR Serverless Spark ジョブの名前 | ds-emr-spark-jar |
| entry point | OSS 内の JAR ファイルへのパス | oss://<yourBucketName>/spark-resource/examples/jars/spark-examples_2.12-3.3.1.jar |
| entry point arguments | ジョブに渡される引数。引数間のデリミタとして # を使用します。 |
— |
| spark submit parameters | spark-submit に渡される Spark 設定フラグ | 以下の例をご参照ください |
JAR ジョブの spark-submit パラメーターの例:
--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1
SQL ジョブの送信
[コードタイプ] を SQL に設定し、以下のパラメーターを設定します:
| パラメーター | 説明 | 例 |
|---|---|---|
| code type | ジョブタイプ | SQL |
| job name | EMR Serverless Spark ジョブの名前 | ds-emr-spark-sql |
| entry point | 有効なファイルパス | — |
| entry point arguments | 実行する SQL スクリプト。# をデリミタとして使用します。 |
以下の例をご参照ください |
| spark submit parameters | spark-submit に渡される Spark 設定フラグ | 以下の例をご参照ください |
[entry point arguments] の例:
-
インライン SQL スクリプトを送信する:
-e#show tables;show tables; -
OSS に保存されている SQL スクリプトを送信する:
-f#oss://<yourBucketName>/spark-resource/examples/sql/show_db.sql
SQL ジョブの spark-submit パラメーターの例:
--class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1
PySpark ジョブの送信
[コード種別] を PYTHON に設定し、以下のパラメーターを設定します。
| パラメーター | 説明 | 例 |
|---|---|---|
| code type | ジョブタイプ | PYTHON |
| job name | EMR Serverless Spark ジョブの名前 | ds-emr-spark-jar |
| entry point | OSS 内の Python スクリプトへのパス | oss://<yourBucketName>/spark-resource/examples/src/main/python/pi.py |
| entry point arguments | スクリプトに渡される引数。# をデリミタとして使用します。 |
1 |
| spark submit parameters | spark-submit に渡される Spark 設定フラグ | 以下の例をご参照ください |
PySpark ジョブの spark-submit パラメーターの例:
--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1
次のステップ
DolphinScheduler のワークフロー、タスクの種類、およびスケジューリング オプションについて詳しくは、Apache DolphinScheduler のドキュメントをご参照ください。