EMR Spark Streaming ノードは、リアルタイムデータストリームに対して高スループットでフォールトトレラントな処理を提供し、データストリームのエラーから迅速に回復するのに役立ちます。DataWorks で EMR Spark Streaming ノードを作成し、ストリーミングタスクを開発できます。
前提条件
Alibaba Cloud EMR クラスターが作成済みで、DataWorks に登録されています。詳細については、「Data Studio (レガシ): EMR クラスターの登録」をご参照ください。
(RAM ユーザーを使用してタスクを開発する場合に必須)RAM ユーザーが DataWorks ワークスペースのメンバーとして追加され、開発ロールまたはワークスペース管理者ロールが割り当てられています。ワークスペース管理者ロールには必要な以上の権限が含まれるため、このロールの割り当てには十分注意してください。メンバーの追加方法の詳細については、「ワークスペースへのメンバー追加」をご参照ください。
サーバーレスリソースグループが購入・構成されています。構成内容には、ワークスペースとの関連付けおよびネットワーク設定が含まれます。詳細については、「サーバーレスリソースグループの作成と使用」をご参照ください。
DataStudio でワークフローが作成されています。
DataStudio のワークフローに基づいて、さまざまなタイプのコンピュートエンジンでの開発操作が行われます。そのため、ノードを作成する前にワークフローを作成しておく必要があります。詳細については、「ワークフローの作成」をご参照ください。
制限事項
-
このタイプのタスクは、サーバーレスリソースグループ(推奨)または専用スケジューリングリソースグループでのみ実行できます。
-
EMR on ACK 上で実行される Spark クラスター向けのタスク開発には、EMR Spark Streaming ノードを使用できません。
ステップ 1: EMR Spark Streaming ノードの作成
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウからをクリックします。ドロップダウンリストからワークスペースを選択し、移動 データ開発 をクリックします。
-
EMR Spark Streaming ノードを作成します。
-
ビジネスフロー pane で、対象のワークフローを右クリックし、 を選択します。
説明または、Create アイコンにカーソルを合わせて、 を選択することもできます。
-
ノードの作成 ダイアログボックスで、名前 を入力し、DPI エンジンインスタンス、ノードタイプ、およびパス を選択します。[Confirm] をクリックして、ノードのエディタータブを開きます。
説明ノード名には、大文字、小文字、漢字、数字、アンダースコア (_)、およびピリオド (.) を使用できます。
-
ステップ 2: EMR Spark Streaming タスクの開発
作成したノードをダブルクリックして、そのエディタータブを開きます。
EMR JAR リソースの作成と参照
DataLake クラスターを使用している場合は、次の手順に従って EMR JAR リソースを参照します。
EMR Spark Streaming ノードが依存するリソースが大きすぎて DataWorks ページからアップロードできない場合は、HDFS にリソースを格納し、コード内で参照する必要があります。例:
spark-submit --master yarn
--deploy-mode cluster
--name SparkPi
--driver-memory 4G
--driver-cores 1
--num-executors 5
--executor-memory 4G
--executor-cores 1
--class org.apache.spark.examples.JavaSparkPi
hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar 100
-
EMR JAR リソースを作成します。詳細については、「EMR リソースの作成と使用」をご参照ください。この操作を初めて実行する場合は、ワンクリック認可 をクリックする必要があります。
-
EMR JAR リソースを参照します。
-
作成したEMR Spark Streaming ノードを開きます。
-
ナビゲーションツリーで、 を展開し、参照したいリソースを見つけます。そのリソースを右クリックし、リソースのリファレンス を選択します。
-
エディターに
##@resource_reference{""}のようなリファレンス文が表示されます。次の例のプレースホルダー値を実際の情報に置き換えます。##@resource_reference{"examples-1.2.0-shaded.jar"} --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>
-
タスクコードの開発
EMR Spark Streaming ノードのエディターで、実行するジョブのコードを入力します。例:
spark-submit --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>
-
この例では、DataWorks にアップロードされたリソースは
examples-1.2.0-shaded.jarです。 -
access-key-idおよびaccess-key-secretを、ご利用の Alibaba Cloud アカウントの AccessKey ID および AccessKey Secret に置き換えてください。これらを取得するには、DataWorks コンソールにログインし、右上隅のプロフィール画像にカーソルを合わせて、AccessKey 管理ページに移動します。 -
EMR Spark Streaming ノードのコードエディターではコメントはサポートされていません。
-
ワークスペースが複数の EMR 計算リソースにバインドされている場合は、タスクに適したものを選択してください。
(オプション)高度なパラメーターの構成
ノードの[Advanced Settings] タブで特定のプロパティを構成できます。利用可能なプロパティの詳細については、「Spark Configuration」をご参照ください。次の表に、高度なパラメーターを示します。
Datalake: EMR on ECS
|
パラメーター |
説明 |
|
queue |
ジョブの YARN キューです。デフォルト値は default です。EMR の YARN の詳細については、「基本的なキュー構成」をご参照ください。 |
|
priority |
ジョブの優先度です。デフォルト値は 1 です。 |
|
Others |
高度な設定でカスタム SparkConf パラメーターを追加できます。DataWorks は、送信時にこれらのパラメーターをコマンドに自動的に追加します。例: 説明
Ranger 権限制御を有効にするには、グローバル Spark パラメーターの設定時に パラメーター構成の詳細については、「グローバル Spark パラメーターの設定」をご参照ください。 |
タスクの実行
-
ツールバーで
アイコンをクリックします。パラメーター ダイアログボックスで、作成したスケジューリングリソースグループを選択し、実行 をクリックします。説明-
パブリックネットワークまたは VPC 内の計算リソースにアクセスするには、計算リソースとの接続性テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続性ソリューション」をご参照ください。
-
今後の実行でリソースグループを変更する必要がある場合は、[Run with Parameters]
アイコンをクリックして、使用するリソースグループを選択します。
-
-
アイコンをクリックしてコードを保存します。 -
(オプション)スモークテストを実行します。
開発環境でスモークテストを実行するには、ノードのコミット前またはコミット後にテストを実行します。詳細については、「スモークテストの実行」をご参照ください。
ステップ 3: スケジューリングプロパティの構成
ノード上のタスクをシステムが定期的に実行するようにするには、ノードの構成タブの右側ナビゲーションウィンドウで [Properties] をクリックし、ビジネス要件に基づいてタスクのスケジューリングプロパティを構成します。詳細については、「概要」をご参照ください。
タスクをコミットする前に、[Properties] タブで [Rerun] および [Parent Nodes] パラメーターを構成する必要があります。
ステップ 4: タスクのデプロイ
ノード上のタスクの構成が完了したら、タスクをコミットしてデプロイする必要があります。タスクをコミットしてデプロイすると、システムはスケジューリング構成に基づいてタスクを定期的に実行します。
-
上部のツールバーで
アイコンをクリックしてタスクを保存します。 -
上部のツールバーで
アイコンをクリックしてタスクをコミットします。[Submit] ダイアログボックスで、[Change description] パラメーターを構成します。その後、ビジネス要件に基づいて、タスクのコミット後にタスクコードをレビューするかどうかを判断します。
説明-
タスクをコミットする前に、[Properties] タブで [Rerun] および [Parent Nodes] パラメーターを構成する必要があります。
-
コードレビューフィーチャーを使用してタスクのコード品質を確保し、無効なタスクコードによるタスク実行エラーを防止できます。コードレビューフィーチャーを有効にすると、コミットされたタスクコードはコードレビューに合格した後でのみデプロイできます。詳細については、「コードレビュー」をご参照ください。
-
標準モードのワークスペースを使用している場合は、タスクをコミットした後に本番環境でタスクをデプロイする必要があります。ノード上のタスクをデプロイするには、ノードの構成タブの右上隅にある [Deploy] をクリックします。詳細については、「ノードのデプロイ」をご参照ください。
その他の操作
タスクをコミットしてデプロイすると、スケジューリング構成に基づいてタスクが定期的に実行されます。対応するノードの構成タブの右上隅にある [Operation Center] をクリックしてオペレーションセンターに移動し、タスクのスケジューリングステータスを確認できます。詳細については、「定期タスクの管理」をご参照ください。