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

E-MapReduce:ジョブの編集

最終更新日:Jun 22, 2026

プロジェクトでは、データ開発のためのジョブを作成できます。

背景情報

前提条件

プロジェクトを作成済みであるか、プロジェクトに追加されている必要があります。詳細については、「プロジェクト管理」をご参照ください。

ジョブの作成

  1. データプラットフォームのプロジェクトページに移動します。

    1. お使いの Alibaba Cloud アカウントで E-MapReduce コンソールにログインします。

    2. トップナビゲーションバーで、リージョンとリソースグループを選択します。

    3. Data Development タブをクリックします。

  2. 編集するプロジェクトの行で、[ジョブの編集] をクリックします。

  3. ジョブを作成します。

    1. 左側のペインで、対象のフォルダを右クリックし、[新しいジョブ] を選択します。

      説明

      フォルダを右クリックして、[新しいサブフォルダ][フォルダ名の変更]Delete Folder などの他の操作を実行することもできます。

    2. [新しいジョブ] ダイアログボックスで、ジョブ名[説明] を入力し、ジョブタイプ ドロップダウンリストからジョブタイプを選択します。

      Alibaba Cloud E-MapReduce のデータ開発では、Shell、Hive、Hive SQL、Spark、SparkSQL、Spark Shell、Spark Streaming、MR、Sqoop、Pig、Flink、Streaming SQL、Presto SQL、Impala SQL のジョブタイプをサポートしています。

      説明

      ジョブタイプ は、ジョブ作成後に変更することはできません。

    3. OK をクリックします。

      ジョブを作成した後、その設定と編集ができます。

ジョブの設定

さまざまなタイプのジョブの開発と設定方法の詳細については、「ジョブ」をご参照ください。このセクションでは、ジョブの 基本設定Advanced Settings[共有ライブラリ]Alert Settings について説明します。

  1. [ジョブの編集] ページで、右上隅にある ジョブ設定 をクリックします。

  2. ジョブ設定 パネルで、基本情報を設定します。

    パラメーター

    説明

    ジョブの概要

    ジョブ名

    作成したジョブの名前です。

    ジョブタイプ

    作成したジョブのタイプです。

    Retries After Failure

    ジョブが失敗した後にリトライする回数です。0 から 5 までの値を選択できます。

    Policy upon Failure

    ジョブが失敗した場合に適用するポリシーです。以下のオプションが利用可能です:

    • [現在のワークフローを一時停止]:ジョブが失敗した場合、現在のワークフローを一時停止します。

    • [次のジョブの実行を続行]:現在のジョブが失敗した場合、ワークフロー内の次のジョブに進みます。

    ビジネス要件に応じて、[最新のジョブコンテンツとパラメーターを使用] スイッチをオンまたはオフにできます。

    • オフ:リトライでは元のジョブコンテンツとパラメーターが使用されます。

    • オン:リトライでは最新のジョブコンテンツとパラメーターが使用されます。

    説明

    右側の 編集 をクリックして、ジョブの説明を修正します。

    ランタイムリソース

    加号 アイコンをクリックして、JAR パッケージや UDF など、ジョブが依存するリソースを追加します。

    まずリソースを OSS にアップロードし、その後 [ランタイムリソース] セクションで追加する必要があります。

    設定パラメーター

    ジョブコードで参照される変数の値を指定します。${variable_name} 形式を使用してコード内で変数を参照できます。

    加号 アイコンをクリックしてキーと値を追加します。値を暗号化するかどうかを選択できます。キーは変数名で、値は変数の値です。スケジュールされた開始時刻に基づいて時間変数を設定することもできます。詳細については、「ジョブの日付を設定する」をご参照ください。

  3. ジョブ設定 パネルで、Advanced Settings タブをクリックします。

    パラメーター

    説明

    モード

    • 送信ノード:ジョブが送信されるノードです。詳細については、「ジョブ送信モード」をご参照ください。以下のモードが利用可能です:

      • [ワーカーノードで送信]:YARN がリソースを割り当てた後、ランチャーがワーカーノードからジョブを送信します。

      • [ヘッダー/ゲートウェイノードで送信]:ジョブはヘッダー/ゲートウェイノードで直接実行されます。

    • 最大予想ランタイム:0 から 10,800 秒。

    環境変数

    ジョブ実行のための環境変数を追加します。ジョブスクリプト内で直接環境変数をエクスポートすることもできます。

    • 例 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"));}

      返される結果は 12345 です。ここで環境変数を設定することは、以下のスクリプトを実行することと同じです:

      export ENV_ABC=12345
      java -jar abc.jar

    Scheduling Parameters

    YARN キュー、メモリ、vCore、優先度、送信ユーザーなど、ジョブのスケジューリング情報を設定します。これらのパラメーターを設定しない場合、Hadoop クラスターのデフォルト値が使用されます。

    説明

    メモリ設定は、ランチャーのメモリクォータを設定します。

  4. ジョブ設定 パネルで、[共有ライブラリ] タブをクリックします。

    [依存ライブラリ] エリアで、ライブラリ一覧 を指定します。

    ジョブの実行は、特定のデータソース関連のライブラリファイルに依存する場合があります。Alibaba Cloud E-MapReduce は、これらをスケジューリングサービスリポジトリ内の共有ライブラリとして提供します。ジョブを作成する際には、使用する依存ライブラリのバージョンを指定する必要があります。例:sharedlibs:streamingsql:datasources-bundle:2.0.0

  5. ジョブ設定 パネルで、Alert Settings タブをクリックします。

    パラメーター

    説明

    Failed

    ジョブが失敗した場合に、ユーザーアラートグループまたは DingTalk アラートグループに通知を送信します。

    起動タイムアウト

    ジョブの起動がタイムアウトした場合に、ユーザーアラートグループまたは DingTalk アラートグループに通知を送信します。

    実行タイムアウト時

    ジョブの実行がタイムアウトした場合に、ユーザーアラートグループまたは DingTalk アラートグループに通知を送信します。

ジョブへのアノテーションの追加

データ開発中に、ジョブコンテンツに特定のアノテーションを追加することで、ジョブパラメーターを追加できます。アノテーションのフォーマットは次のとおりです:

!!! @<AnnotationName>: <AnnotationContent>
説明

!!! 文字は行の先頭にインデントなしで配置する必要があります。1行に1つのアノテーションを使用してください。

以下のアノテーションがサポートされています。

アノテーション名

説明

rem

コメント行を示します。

!!! @rem: This is a comment.

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

要求メモリを MB 単位で設定します。

!!! @scheduler.vmem: 1024

scheduler.vcores

要求する vCore の数を設定します。

!!! @scheduler.vcores: 1

scheduler.priority

リクエストの優先度を設定します。値の範囲は 1 から 100 です。

!!! @scheduler.priority: 1

scheduler.user

送信ユーザー名を設定します。

!!! @scheduler.user: root
重要

アノテーションを使用する際の注意点:

  • システムは無効なアノテーションを自動的に無視します。

  • アノテーションで指定されたジョブパラメーターは、ジョブ設定で構成されたパラメーターをオーバーライドします。

ジョブの実行

  1. ジョブを実行します。

    1. ジョブページで、右上隅にある 実行 をクリックします。

    2. Run Job ダイアログボックスで、リソースグループと実行クラスターを選択します。

    3. OK をクリックします。

  2. ジョブの実行ログを表示します。

    1. ジョブの実行が開始された後、Log タブで実行ログを表示できます。

      2021-09-02 16:37:54.653 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [COMMAND][FJI-xxx] submit user: hadoop
      2021-09-02 16:37:54.654 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [COMMAND][FJI-3xxx] envs(override): {EMR_FLOW_AGENT_JOB_ID=FJI-xxx, PATH=/mnt/disk3/yarn/usercache/hadoop/appcache/application_1630311773326_0022/container_1630311773326_0022_01_000001, EMR_FLOW_CLUSTER_ID=C-xxx, FLOW_SKIP_SQL_ANALYZE=false, EMR_FLOW_JOB_INSTANCE_ID="xxx", EMR_FLOW_NODE_INSTANCE_ID="xxx", EMR_FLOW_JOB_ID="xxx"}
      2021-09-02 16:37:54.654 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [COMMAND][xxx] Executing command line: [bash, -c, echo 234]
      2021-09-02 16:37:54.655 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [COMMAND][FJI-3xxx] Shell Executor type: com.aliyun.emr.flow.agent.common.shell.JavaShellExecutor.
      ===================JOB OUTPUT BEGIN===================
      234
      ===================JOB OUTPUT END=====================
      2021-09-02 16:37:55.159 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [COMMAND][FJI-3E78xxx] Finished command line, exit code=0.
      Thu Sep 02 16:37:55 CST 2021 [JobLauncherRunner] INFO Closing job launcher ...
      2021-09-02 16:37:55.161 [main] INFO  c.a.emr.flow.agent.jobs.launcher.JobLauncherBase - [FJI-3E788xxx] Closing ...
      2021-09-02 16:37:55.162 [main] INFO  c.a.e.f.a.j.l.impl.CommonShellJobLauncherImpl - [FJI-3E788F6xxx] Stopping command executor ...
      Thu Sep 02 16:37:55 CST 2021 [YarnJobLauncherAM] INFO Closing launcher am ...
      2021-09-02 16:37:55.167 [main] INFO  o.a.hadoop.yarn.client.api.impl.AMRMClientImpl - Waiting for application to be successfully unregistered.
      Thu Sep 02 16:37:55 CST 2021 [YarnJobLauncherAM] INFO Emr flow launcher is quit.
      2021-09-02 16:37:55.385 [Shutdown-FJI-3E788F67373BAECD_0] INFO  c.a.emr.flow.agent.jobs.launcher.JobLauncherBase - [FJI-3E78xxx] Call shutdown hook.
      2021-09-02 16:37:55.385 [Shutdown-FJI-3E788F67373BAECD_0] INFO  c.a.emr.flow.agent.jobs.launcher.JobLauncherBase - [FJI-378xxx] Closing ...
      2021-09-02 16:37:55.385 [Shutdown-FJI-3E788F67373BAECD_0] INFO  c.a.emr.flow.agent.jobs.launcher.JobLauncherBase - [FJI-3E78xxx] This launcher is closed already, skip.
      ######END_OF_LOG######
    2. Execution Records タブをクリックして、ジョブの実行記録を表示します。

    3. レコードの Details をクリックして O&M Center に移動し、ジョブインスタンスに関する詳細情報を表示します。

ジョブで利用可能な操作

[ジョブの編集] エリアで、ジョブ名を右クリックして以下の操作を実行できます。

アクション

説明

ジョブの複製

現在のジョブの設定を複製して、同じフォルダに新しいジョブを作成します。

ジョブ名の変更

ジョブの名前を変更します。

ジョブ削除

ジョブの削除は、そのジョブがワークフローに関連付けられていない場合、または関連付けられたワークフローが実行中でもスケジュールされてもいない場合にのみ可能です。

ジョブ送信モード

データ開発モジュールにおけるランチャーである spark-submit プロセスは、Spark ジョブを送信するために使用される Spark コマンドです。通常、600 MB 以上のメモリを消費します。ジョブ設定パネルのメモリ設定は、ランチャーのメモリクォータを設定します。

以下の2つのジョブ送信モードが利用可能です:

ジョブ送信モード

説明

ヘッダー/ゲートウェイノードで送信

spark-submit プロセスはヘッダー/ゲートウェイノードで実行され、YARN によって監視されません。spark-submit は大量のメモリを消費するため、このモードで多数のジョブを実行すると、ヘッダー/ゲートウェイノードのリソースに負荷がかかり、クラスター全体の安定性が損なわれるリスクがあります。

ワーカーノードで送信

spark-submit プロセスはワーカーノードで実行され、YARN コンテナを占有し、YARN によって監視されます。このモードは、ヘッダー/ゲートウェイノードのリソース負荷を軽減できます。

Alibaba Cloud E-MapReduce クラスターでは、ジョブインスタンスが消費するメモリは次のように計算されます:

ジョブインスタンスが消費するメモリ = ランチャーが消費するメモリ + ユーザージョブが消費するメモリ

Spark ジョブの場合、ユーザージョブが消費するメモリはさらに次のように分類できます:

ジョブが消費するメモリ = spark-submit (論理モジュール、プロセスではない) が消費するメモリ + ドライバーが消費するメモリ + エグゼキュータが消費するメモリ

ドライバーの物理メモリの場所は、次の表に示すように、ジョブの設定によって異なります。

Spark 実行モード

spark-submit とドライバー

プロセスの詳細

Yarn-Client モード

ジョブ送信プロセスは LOCAL モードを使用

spark-submit とドライバーは同じプロセスで実行されます。

ジョブ送信プロセスはヘッダー/ゲートウェイノードで実行され、YARN によって監視されません。

ジョブ送信プロセスは YARN モードを使用

ジョブ送信プロセスはワーカーノードで実行され、YARN コンテナを占有し、YARN によって監視されます。

Yarn-Cluster モード

ドライバーは spark-submit とは別のプロセスで実行されます。

ドライバーは YARN コンテナを占有します。