プロジェクトでタスクを開発するためにジョブを作成できます。このトピックでは、ジョブ関連の操作について説明します。
背景情報
前提条件
プロジェクトが作成されます。詳細については、「プロジェクトの管理」をご参照ください。
ジョブの作成
- データプラットフォームタブに移動します。
- Alibaba Cloudアカウントを使用して、Alibaba Cloud EMRコンソールにログオンします。
- 上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
- [データプラットフォーム] タブをクリックします。
- 表示されるページの [プロジェクト] セクションで、管理するプロジェクトを見つけ、[アクション] 列の [ジョブの編集] をクリックします。
- ジョブを作成します。
- 表示されるページの左側にある [ジョブの編集] ペインで、操作を実行するフォルダーを右クリックし、[ジョブの作成] を選択します。説明 フォルダーを右クリックして、[サブフォルダーの作成]、[フォルダー名の変更]、または [フォルダーの削除] を選択して、対応する操作を実行することもできます。
- [ジョブの作成] ダイアログボックスで、[名前] と [説明] を指定し、[ジョブタイプ] ドロップダウンリストから特定のジョブタイプを選択します。
E-MapReduce (EMR) は、データ開発において次の種類のジョブをサポートしています。Shell、Hive、Hive SQL、Spark、Spark SQL、Spark Shell、Spark Streaming、MapReduce、Sqoop、Pig、Flink、Streaming SQL、Presto SQL、および Impala SQL。
説明 ジョブの作成後、[ジョブのタイプ] を変更することはできません。 - [OK] をクリックします。ジョブの作成後、ジョブを構成および編集できます。
- 表示されるページの左側にある [ジョブの編集] ペインで、操作を実行するフォルダーを右クリックし、[ジョブの作成] を選択します。
ジョブの構成
ジョブの各タイプの開発方法と構成方法の詳細については、「ジョブ」をご参照ください。このセクションでは、ジョブ設定パネルの [基本設定]、[詳細設定]、[共有ライブラリ]、および [アラート設定] タブでジョブのパラメーターを構成する方法について説明します。
- [ジョブ] ページの右上隅にある [ジョブ設定] をクリックします。
- [ジョブ設定] パネルの [基本設定] タブでパラメーターを構成します。
セクションとパラメーター 説明 [ジョブの概要] [名前] ジョブの名前。 [ジョブタイプ] ジョブのタイプ。 [再試行] ジョブが失敗した場合に許可される再試行回数。このパラメーターの値の範囲は 0 ~ 5 です。 [失敗時のアクション] ジョブが失敗した場合に実行できるアクション。有効な値: - [一時停止]:ジョブが失敗した場合、現在のワークフローを中断します。
- [次のジョブを実行]:ジョブが失敗した場合、次のジョブの実行を続けます。
ビジネス要件に基づいて、[最新のジョブコンテンツとパラメーターを使用する] スイッチをオンにするかどうかを決定できます。- このスイッチをオフにすると、失敗したジョブを再実行した後に、元のジョブコンテンツとパラメーターに基づいてジョブインスタンスが生成されます。
- このスイッチをオンにすると、失敗したジョブを再実行した後に、最新のジョブコンテンツとパラメーターに基づいてジョブインスタンスが生成されます。
[説明] ジョブの説明。ジョブの説明を変更する場合は、このパラメーターの右側にある [編集] をクリックします。 [リソース] ジョブの実行に必要なリソース(JAR パッケージ、ユーザー定義関数(UDF)など)。右側の
アイコンをクリックして、リソースを追加します。最初に、リソースをオブジェクトストレージサービス(OSS)にアップロードします。その後、ジョブに追加できます。
[構成パラメーター] ジョブスクリプトで参照する変数。${変数名} の形式でジョブスクリプト内の変数を参照できます。
アイコンを右クリックして、キーと値のペア形式で変数を追加します。ビジネス要件に基づいて、[パスワード] を選択して値を非表示にするかどうかを決定できます。キーは変数の名前を示します。値は変数の値を示します。さらに、スケジュールの開始時刻に基づいて時間変数を設定できます。詳細については、「ジョブの日時を設定する」をご参照ください。 - [詳細設定] タブをクリックして、パラメーターを構成します。
セクション パラメーターと説明 [モード] - [ジョブ送信ノード]:ジョブを送信するモード。詳細については、「ジョブの送信モード」をご参照ください。有効な値:
- [ワーカーノード]:ジョブはランチャーを使用して YARN に送信され、YARN はジョブを実行するためのリソースを割り当てます。
- [ヘッダー/ゲートウェイノード]:ジョブは、割り当てられたノードでプロセスとして実行されます。
- [推定最大期間]:ジョブの推定最大実行時間。有効な値:0 ~ 10800。単位:秒。
[環境変数] ジョブの実行に使用される環境変数。ジョブスクリプトから環境変数をエクスポートすることもできます。 - 例 1:
echo ${ENV_ABC}というコードで Shell ジョブを構成します。ENV_ABC 変数を12345に設定すると、echoコマンドを実行した後に12345の値が返されます。 - 例 2:
java -jar abc.jarというコードで Shell ジョブを構成します。abc.jar パッケージの内容:public static void main(String[] args) {System.out.println(System.getEnv("ENV_ABC"));}ENV_ABC 変数を 12345 に設定すると、ジョブを実行した後に12345の値が返されます。[環境変数] セクションで ENV_ABC 変数を設定する効果は、次のスクリプトを実行するのと同じです。export ENV_ABC=12345 java -jar abc.jar
[スケジューリングパラメーター] ジョブのスケジューリングに使用されるパラメーター(キュー、メモリ(MB)、vCore、優先度、実行者など)。これらのパラメーターを構成しない場合は、Hadoop クラスターのデフォルト設定が使用されます。 説明 メモリ(MB)パラメーターは、ランチャーのメモリクォータを指定します。 - [ジョブ送信ノード]:ジョブを送信するモード。詳細については、「ジョブの送信モード」をご参照ください。有効な値:
- [共有ライブラリ] タブをクリックします。[依存ライブラリ] セクションで、[ライブラリ] を指定します。
ジョブの実行は、データソースに関連するいくつかのライブラリファイルに依存します。EMR は、スケジューリングセンターのリポジトリに依存ライブラリとしてライブラリを公開します。ジョブを作成するときは、依存ライブラリを指定する必要があります。依存ライブラリを指定するには、
sharedlibs:streamingsql:datasources-bundle:2.0.0などの参照文字列を入力します。 - [アラート設定] タブをクリックして、アラートパラメーターを構成します。
パラメーター 説明 [実行失敗] ジョブが失敗した場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。 [起動タイムアウト時のアクション] ジョブの起動がタイムアウトした場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。 [ジョブの実行がタイムアウトしました。] ジョブの実行がタイムアウトした場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。
注釈を追加する
!!! @<注釈名>: <注釈内容>!!!)をインデントしないでください。1 行に 1 つの注釈を追加します。| 注釈名 | 説明 | 例 |
| rem | コメントを追加します。 | |
| env | 環境変数を追加します。 | |
| var | カスタム変数を追加します。 | |
| resource | リソースファイルを追加します。 | |
| sharedlibs | 依存ライブラリを追加します。この注釈は、Streaming SQL ジョブでのみ有効です。複数の依存ライブラリはコンマ(,)で区切ります。 | |
| scheduler.queue | ジョブの送信先キューを指定します。 | |
| scheduler.vmem | ジョブの実行に必要なメモリを指定します。単位:MiB。 | |
| scheduler.vcores | ジョブの実行に必要な vCore 数を指定します。 | |
| scheduler.priority | ジョブの優先度を指定します。有効な値:1 ~ 100。 | |
| scheduler.user | ジョブを送信するユーザーを指定します。 | |
- 無効な注釈は自動的にスキップされます。たとえば、不明な注釈や、内容の形式が無効な注釈はスキップされます。
- 注釈で指定されたジョブパラメーターは、[ジョブ設定] パネルで指定されたジョブパラメーターよりも優先されます。パラメーターが注釈と [ジョブ設定] パネルの両方で指定されている場合、注釈で指定されたパラメーター設定が有効になります。
ジョブの実行
- 作成したジョブを実行します。
- ジョブページで、右上隅にある [実行] をクリックしてジョブを実行します。
- [ジョブの実行] ダイアログボックスで、リソースグループと作成したクラスターを選択します。
- [OK] をクリックします。
- 実行の詳細を表示します。
- ジョブページの下部にある [ログ] タブをクリックして、操作ログを表示します。

- [レコード] タブをクリックして、ジョブインスタンスの実行レコードを表示します。
- ジョブインスタンスの [アクション] 列の [詳細] をクリックして、[スケジューリングセンター] タブに移動します。このタブで、ジョブインスタンスの詳細を表示できます。
- ジョブページの下部にある [ログ] タブをクリックして、操作ログを表示します。
ジョブで実行できる操作
| 操作 | 説明 |
| [ジョブの複製] | ジョブの構成を複製して、同じフォルダーに新しいジョブを生成します。 |
| [ジョブ名の変更] | ジョブの名前を変更します。 |
| [ジョブの削除] | ジョブを削除します。ジョブがワークフローに関連付けられていない場合、または関連付けられたワークフローが実行またはスケジューリングされていない場合にのみ、ジョブを削除できます。 |
ジョブ送信モード
spark-submit プロセスは、データ開発モジュール内のランチャーであり、Spark ジョブの送信に使用されます。ほとんどの場合、このプロセスは 600 MiB を超えるメモリを占有します。[ジョブ設定] パネルの [メモリ (MB)] パラメーターは、ランチャーに割り当てられるメモリのサイズを指定します。
| ジョブ送信モード | 説明 |
| [ヘッダー/ゲートウェイノード] | このモードでは、spark-submit プロセスはマスターノードで実行され、YARN によって監視されません。 spark-submit プロセスは大量のメモリを要求します。多数のジョブがマスターノードの多くのリソースを消費するため、クラスターの安定性が損なわれます。 |
| [ワーカーノード] | このモードでは、spark-submit プロセスはコアノードで実行され、YARN コンテナーを占有し、YARN によって監視されます。このモードでは、マスターノードのリソース使用量が削減されます。 |
ジョブインスタンスによって消費されるメモリ = ランチャーによって消費されるメモリ + ジョブインスタンスに対応するジョブによって消費されるメモリジョブによって消費されるメモリ = spark-submit 論理モジュール(プロセスではない)によって消費されるメモリ + ドライバーによって消費されるメモリ + executor によって消費されるメモリ| Spark アプリケーションの起動モード | spark-submit とドライバーが実行されるプロセス | プロセスの説明 | |
| yarn-client モード | LOCAL モードでジョブを送信します。 | ドライバーは spark-submit と同じプロセスで実行されます。 | ジョブを送信するために使用されるプロセスはマスターノードで実行され、YARN によって監視されません。 |
| YARN モードでジョブを送信します。 | ジョブを送信するために使用されるプロセスはコアノードで実行され、YARN コンテナーを占有し、YARN によって監視されます。 | ||
| yarn-cluster モード | ドライバーは spark-submit とは異なるプロセスで実行されます。 | ドライバーは YARN コンテナーを占有します。 | |