すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:ジョブの編集

最終更新日:Jan 11, 2025

プロジェクトでタスクを開発するためにジョブを作成できます。このトピックでは、ジョブ関連の操作について説明します。

背景情報

前提条件

プロジェクトが作成されます。詳細については、「プロジェクトの管理」をご参照ください。

ジョブの作成

  1. データプラットフォームタブに移動します。
    1. Alibaba Cloudアカウントを使用して、Alibaba Cloud EMRコンソールにログオンします。
    2. 上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します
    3. [データプラットフォーム] タブをクリックします。
  2. 表示されるページの [プロジェクト] セクションで、管理するプロジェクトを見つけ、[アクション] 列の [ジョブの編集] をクリックします。
  3. ジョブを作成します。
    1. 表示されるページの左側にある [ジョブの編集] ペインで、操作を実行するフォルダーを右クリックし、[ジョブの作成] を選択します。
      説明 フォルダーを右クリックして、[サブフォルダーの作成][フォルダー名の変更]、または [フォルダーの削除] を選択して、対応する操作を実行することもできます。
    2. [ジョブの作成] ダイアログボックスで、[名前][説明] を指定し、[ジョブタイプ] ドロップダウンリストから特定のジョブタイプを選択します。

      E-MapReduce (EMR) は、データ開発において次の種類のジョブをサポートしています。Shell、Hive、Hive SQL、Spark、Spark SQL、Spark Shell、Spark Streaming、MapReduce、Sqoop、Pig、Flink、Streaming SQL、Presto SQL、および Impala SQL。

      説明 ジョブの作成後、[ジョブのタイプ] を変更することはできません。
    3. [OK] をクリックします。
      ジョブの作成後、ジョブを構成および編集できます。

ジョブの構成

ジョブの各タイプの開発方法と構成方法の詳細については、「ジョブ」をご参照ください。このセクションでは、ジョブ設定パネルの [基本設定][詳細設定][共有ライブラリ]、および [アラート設定] タブでジョブのパラメーターを構成する方法について説明します。

  1. [ジョブ] ページの右上隅にある [ジョブ設定] をクリックします。
  2. [ジョブ設定] パネルの [基本設定] タブでパラメーターを構成します。
    セクションとパラメーター説明
    [ジョブの概要][名前]ジョブの名前。
    [ジョブタイプ]ジョブのタイプ。
    [再試行]ジョブが失敗した場合に許可される再試行回数。このパラメーターの値の範囲は 0 ~ 5 です。
    [失敗時のアクション]ジョブが失敗した場合に実行できるアクション。有効な値:
    • [一時停止]:ジョブが失敗した場合、現在のワークフローを中断します。
    • [次のジョブを実行]:ジョブが失敗した場合、次のジョブの実行を続けます。
    ビジネス要件に基づいて、[最新のジョブコンテンツとパラメーターを使用する] スイッチをオンにするかどうかを決定できます。
    • このスイッチをオフにすると、失敗したジョブを再実行した後に、元のジョブコンテンツとパラメーターに基づいてジョブインスタンスが生成されます。
    • このスイッチをオンにすると、失敗したジョブを再実行した後に、最新のジョブコンテンツとパラメーターに基づいてジョブインスタンスが生成されます。
    [説明]ジョブの説明。ジョブの説明を変更する場合は、このパラメーターの右側にある [編集] をクリックします。
    [リソース]ジョブの実行に必要なリソース(JAR パッケージ、ユーザー定義関数(UDF)など)。右側の Plus sign アイコンをクリックして、リソースを追加します。

    最初に、リソースをオブジェクトストレージサービス(OSS)にアップロードします。その後、ジョブに追加できます。

    [構成パラメーター]ジョブスクリプトで参照する変数。${変数名} の形式でジョブスクリプト内の変数を参照できます。

    Plus sign アイコンを右クリックして、キーと値のペア形式で変数を追加します。ビジネス要件に基づいて、[パスワード] を選択して値を非表示にするかどうかを決定できます。キーは変数の名前を示します。値は変数の値を示します。さらに、スケジュールの開始時刻に基づいて時間変数を設定できます。詳細については、「ジョブの日時を設定する」をご参照ください。

  3. [詳細設定] タブをクリックして、パラメーターを構成します。
    セクションパラメーターと説明
    [モード]
    • [ジョブ送信ノード]:ジョブを送信するモード。詳細については、「ジョブの送信モード」をご参照ください。有効な値:
      • [ワーカーノード]:ジョブはランチャーを使用して 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)パラメーターは、ランチャーのメモリクォータを指定します。
  4. [共有ライブラリ] タブをクリックします。
    [依存ライブラリ] セクションで、[ライブラリ] を指定します。

    ジョブの実行は、データソースに関連するいくつかのライブラリファイルに依存します。EMR は、スケジューリングセンターのリポジトリに依存ライブラリとしてライブラリを公開します。ジョブを作成するときは、依存ライブラリを指定する必要があります。依存ライブラリを指定するには、sharedlibs:streamingsql:datasources-bundle:2.0.0 などの参照文字列を入力します。

  5. [アラート設定] タブをクリックして、アラートパラメーターを構成します。
    パラメーター説明
    [実行失敗]ジョブが失敗した場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。
    [起動タイムアウト時のアクション]ジョブの起動がタイムアウトした場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。
    [ジョブの実行がタイムアウトしました。]ジョブの実行がタイムアウトした場合に、アラート連絡先グループまたは DingTalk アラートグループに通知を送信するかどうかを指定します。

注釈を追加する

データ開発でジョブパラメーターを構成するために、ジョブスクリプトに注釈を追加できます。注釈は次の形式で追加します。
!!! @<注釈名>: <注釈内容>
説明 注釈を開始する 3 つの感嘆符(!!!)をインデントしないでください。1 行に 1 つの注釈を追加します。
次の表に、サポートされているすべての注釈を示します。
注釈名説明
remコメントを追加します。
!!! @rem: これはコメントです。
env環境変数を追加します。
!!! @env: ENV_1=ABC
varカスタム変数を追加します。
!!! @var: var1="value1 and \"one string end with 3 spaces\"   "
!!! @var: var2=${yyyy-MM-dd}
resourceリソースファイルを追加します。
!!! @resource: oss://bucket1/dir1/file.jar
sharedlibs依存ライブラリを追加します。この注釈は、Streaming SQL ジョブでのみ有効です。複数の依存ライブラリはコンマ(,)で区切ります。
!!! @sharedlibs: sharedlibs:streamingsql:datasources-bundle:1.7.0,...
scheduler.queueジョブの送信先キューを指定します。
!!! @scheduler.queue: default
scheduler.vmemジョブの実行に必要なメモリを指定します。単位:MiB。
!!! @scheduler.vmem: 1024
scheduler.vcoresジョブの実行に必要な vCore 数を指定します。
!!! @scheduler.vcores: 1
scheduler.priorityジョブの優先度を指定します。有効な値:1 ~ 100。
!!! @scheduler.priority: 1
scheduler.userジョブを送信するユーザーを指定します。
!!! @scheduler.user: root
重要
注釈を追加する際には、次の点に注意してください。
  • 無効な注釈は自動的にスキップされます。たとえば、不明な注釈や、内容の形式が無効な注釈はスキップされます。
  • 注釈で指定されたジョブパラメーターは、[ジョブ設定] パネルで指定されたジョブパラメーターよりも優先されます。パラメーターが注釈と [ジョブ設定] パネルの両方で指定されている場合、注釈で指定されたパラメーター設定が有効になります。

ジョブの実行

  1. 作成したジョブを実行します。
    1. ジョブページで、右上隅にある [実行] をクリックしてジョブを実行します。
    2. [ジョブの実行] ダイアログボックスで、リソースグループと作成したクラスターを選択します。
    3. [OK] をクリックします。
  2. 実行の詳細を表示します。
    1. ジョブページの下部にある [ログ] タブをクリックして、操作ログを表示します。
      Log
    2. [レコード] タブをクリックして、ジョブインスタンスの実行レコードを表示します。
    3. ジョブインスタンスの [アクション] 列の [詳細] をクリックして、[スケジューリングセンター] タブに移動します。このタブで、ジョブインスタンスの詳細を表示できます。

ジョブで実行できる操作

[ジョブの編集] ペインで、ジョブを右クリックして、次の表に示す操作を実行できます。
操作説明
[ジョブの複製]ジョブの構成を複製して、同じフォルダーに新しいジョブを生成します。
[ジョブ名の変更]ジョブの名前を変更します。
[ジョブの削除]ジョブを削除します。ジョブがワークフローに関連付けられていない場合、または関連付けられたワークフローが実行またはスケジューリングされていない場合にのみ、ジョブを削除できます。

ジョブ送信モード

spark-submit プロセスは、データ開発モジュール内のランチャーであり、Spark ジョブの送信に使用されます。ほとんどの場合、このプロセスは 600 MiB を超えるメモリを占有します。[ジョブ設定] パネルの [メモリ (MB)] パラメーターは、ランチャーに割り当てられるメモリのサイズを指定します。

次の表に、最新バージョンの EMR でジョブを送信できるモードを示します。
ジョブ送信モード説明
[ヘッダー/ゲートウェイノード]このモードでは、spark-submit プロセスはマスターノードで実行され、YARN によって監視されません。 spark-submit プロセスは大量のメモリを要求します。多数のジョブがマスターノードの多くのリソースを消費するため、クラスターの安定性が損なわれます。
[ワーカーノード]このモードでは、spark-submit プロセスはコアノードで実行され、YARN コンテナーを占有し、YARN によって監視されます。このモードでは、マスターノードのリソース使用量が削減されます。
EMR クラスターでは、ジョブインスタンスによって消費されるメモリは、次の式を使用して計算されます。
ジョブインスタンスによって消費されるメモリ = ランチャーによって消費されるメモリ + ジョブインスタンスに対応するジョブによって消費されるメモリ
Spark ジョブの場合、ジョブによって消費されるメモリは、次の式を使用して計算されます。
ジョブによって消費されるメモリ = spark-submit 論理モジュール(プロセスではない)によって消費されるメモリ + ドライバーによって消費されるメモリ + executor によって消費されるメモリ
ドライバーが実行されるプロセスは、YARN で Spark アプリケーションが起動されるモードによって異なります。
Spark アプリケーションの起動モードspark-submit とドライバーが実行されるプロセスプロセスの説明
yarn-client モードLOCAL モードでジョブを送信します。ドライバーは spark-submit と同じプロセスで実行されます。ジョブを送信するために使用されるプロセスはマスターノードで実行され、YARN によって監視されません。
YARN モードでジョブを送信します。ジョブを送信するために使用されるプロセスはコアノードで実行され、YARN コンテナーを占有し、YARN によって監視されます。
yarn-cluster モードドライバーは spark-submit とは異なるプロセスで実行されます。ドライバーは YARN コンテナーを占有します。