全部產品
Search
文件中心

E-MapReduce:作業編輯

更新時間:May 27, 2026

在專案中,您可以通過建立作業來進行任務開發。本文為您介紹作業編輯相關的建立、設定和運行等操作。

背景資訊

本文為您提供作業編輯的相關操作,具體如下:

前提條件

已建立專案或已被加入到專案中,詳情請參見專案管理

新增作業

  1. 進入資料開發的專案列表頁面。

    1. 通過阿里雲帳號登入阿里雲E-MapReduce控制台

    2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    3. 單擊上方的数据开发頁簽。

  2. 單擊待編輯專案所在行的作業編輯

  3. 新增作業。

    1. 在頁面左側,在需要操作的檔案夾上單擊右鍵,選擇新增作業

      說明

      您還可以通過在檔案夾上單擊右鍵,進行建立子檔案夾重新命名檔案夾删除文件夹操作。

    2. 新增作業對話方塊中,輸入作业名称作業描述,從作业类型列表中,選擇建立的作業類型。

      目前E-MapReduce資料開發支援的作業類型有:Shell、Hive、Hive SQL、Spark、SparkSQL、Spark Shell、Spark Streaming、MR、Sqoop、Pig 、Flink、Streaming SQL、Presto SQL和Impala SQL。

      說明

      建立作業時作业类型一經確定,不能修改。

    3. 單擊确定

      作業建立成功後,就可以做相應的作業設定、作業編輯等操作了。

設定作業

各類作業類型的開發與設定,請參見作業部分。以下內容介紹的是作業的基礎設置高级设置共用庫告警设置

  1. 作業編輯頁面,單擊右上方的作業設置

  2. 作業設置面板,設定基礎資訊。

    配置項

    說明

    作業概要

    作业名称

    您建立作業的名稱。

    作业类型

    您建立作業的類型。

    失败重试次数

    作業運行失敗後的重試次數,可以選擇的重試次數範圍為:0~5次。

    失败策略

    作業運行失敗後支援的策略如下:

    • 暫停當前工作流程:作業運行失敗後,不再繼續執行當前工作流程。

    • 繼續執行下一個作業:作業運行失敗後,繼續執行下一個作業。

    根據業務情況,可以開啟或者關閉使用最新作業內容和參數開關。

    • 關閉:作業失敗後重新執行時,使用初始作業內容和參數產生工作執行個體。

    • 開啟:作業失敗後重新執行時,使用最新的作業內容和參數產生工作執行個體。

    作業描述

    單擊右側的编辑,可以修改作業的描述。

    運行資源

    單擊右側的加號表徵圖,添加作業執行所依賴的JAR包或UDF等資源。

    您需要將資源先上傳至OSS,然後在運行資源中直接添加即可。

    配置參數

    指定作業代碼中所引用的變數的值。您可以在代碼中引用變數,格式為${變數名}

    單擊右側的加號表徵圖,添加Key和Value,根據需要選擇是否為Value進行加密。其中,Key為變數名,Value為變數的值。另外,您還可以根據調度啟動時間在此配置時間變數,詳情請參見作業日期設定

  3. 作業設置面板,單擊高级设置頁簽。

    配置項

    說明

    模式

    • 提交節點包括以下兩種模式,詳情請參見作業提交模式說明

      • 在Worker節點提交:作業通過Launcher在YARN上分配資源進行提交。

      • 在Header/Gateway節點提交:作業在分配的機器上直接運行。

    • 預期最大運行時間長度:0~10800秒。

    環境變數

    添加作業執行的環境變數,也可以在作業指令碼中直接export環境變數。

    • 樣本一:一個Shell類型的任務,內容是echo ${ENV_ABC}。如果此處設定了一個環境變數 ENV_ABC=12345,則echo命令的輸出結果為12345

    • 樣本二:一個Shell類型的作業,內容是java -jar abc.jar,其中abc.jar的內容如下:

      public static void main(String[] args) {System.out.println(System.getEnv("ENV_ABC"));}

      返回的結果是12345。此處環境變數的設定相當於執行了以下指令碼。

      export ENV_ABC=12345
      java -jar abc.jar

    调度参数

    設定作業運行YARN隊列、記憶體、虛擬核心數、優先順序和執行使用者等資訊。當未設定這些參數時,作業會直接採用Hadoop叢集的預設值。

    說明

    記憶體設定用於設定啟動器Launcher的記憶體配額。

  4. 作業設置面板,單擊共用庫頁簽。

    依賴庫地區,填寫庫列表

    執行作業需要依賴一些資料來源相關的庫檔案。E-MapReduce將這些庫以依賴庫的形式發布在調度服務的倉庫中,在建立作業時需要指定使用哪個版本的依賴庫。您只需設定相應的依賴庫版本,例如sharedlibs:streamingsql:datasources-bundle:2.0.0

  5. 作業設置面板,單擊告警设置頁簽。

    配置項

    說明

    执行失败

    設定作業執行失敗時,是否通知到使用者警示組或DingTalk警示組。

    启动超时

    設定作業啟動逾時時,是否通知到使用者警示組或DingTalk警示組。

    作業執行逾時

    設定作業執行逾時時,是否通知到使用者警示組或DingTalk警示組。

在作業中添加註解

進行資料開發時,您可以通過在作業內容裡添加特定的註解來添加作業參數。註解的格式如下。

!!! @<註解名稱>: <註解內容>
說明

!!!必須頂格,並且每行一個註解。

當前支援的註解如下。

註解名稱

說明

樣本

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

設定申請記憶體,單位MB。

!!! @scheduler.vmem: 1024

scheduler.vcores

設定申請的核心數。

!!! @scheduler.vcores: 1

scheduler.priority

設定申請的優先順序,取值範圍為1~100。

!!! @scheduler.priority: 1

scheduler.user

設定提交使用者名稱。

!!! @scheduler.user: root
重要

使用註解時,需要注意以下事項:

  • 無效註解將被自動跳過。例如,設定未知註解、註解內容不符合預期等。

  • 註解中的作業參數優先順序高於作業配置中的參數,如果作業註解和作業配置中有相同的參數,則以作業註解為準。

運行作業

  1. 執行作業。

    1. 在建立的作業頁面,單擊右上方的运行來執行作業。

    2. 运行作业對話方塊中,選擇資源群組和執行叢集。

    3. 單擊确定

  2. 查看作業作業記錄。

    1. 作業運行後,您可以在日志頁簽中查看作業啟動並執行日誌。

      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. 單擊运行记录頁簽,可以查看工作執行個體的運行情況。

    3. 單擊目標運行記錄右側的详情,跳轉到运维中心,可以查看工作執行個體的詳細資料。

作業可執行操作

作業編輯地區,您可以在作業名稱上單擊右鍵,執行如下操作。

操作

說明

複製作業

在相同檔案夾下,複製當前作業的配置,產生一個新的作業。

重新命名作業

重新命名作業名稱。

删除作业

只有在作業沒有關聯工作流程,或關聯的工作流程沒有在運行或調度時,才可以被刪除。

作業提交模式說明

Spark-Submit進程(在資料開發模組中為啟動器Launcher)是Spark的作業提交命令,用於提交Spark作業,一般佔用600 MB以上記憶體。作業設定面板中的記憶體設定,用於設定Launcher的記憶體配額。

新版作業提交模式包括以下兩種。

作業提交模式

描述

在Header/Gateway節點提交

Spark-Submit進程運行在Header節點上,不受YARN監控。Spark-Submit記憶體消耗大,作業過多會造成Header節點資源緊張,導致整個叢集不穩定。

在Worker節點提交

Spark-Submit進程運行在Worker節點上,佔用YARN的一個Container,受YARN監控。此模式可以緩解Header節點的資源使用。

在E-MapReduce叢集中,工作執行個體消耗記憶體計算方式如下。

工作執行個體消耗記憶體 = Launcher消耗記憶體 + 使用者作業(Job)消耗記憶體

在Spark作業中,使用者作業(Job)消耗記憶體又可以進一步細分,計算方式如下。

Job消耗記憶體 = Spark-Submit(指邏輯模組,非進程)消耗記憶體 + Driver端消耗記憶體 + Executor端消耗記憶體

作業配置不同,Driver端消耗的實體記憶體的位置也不同,詳細內容如下表。

Spark使用模式

Spark-Submit和Driver端

進程情況

Yarn-Client模式

作業提交進程使用LOCAL模式

Spark-Submit和Driver端是在同一個進程中。

作業提交進程是Header節點上的一個進程,不受YARN監控。

作業提交進程使用YARN模式

作業提交進程是Worker節點上的一個進程,佔用YARN的一個Container,受YARN監控。

Yarn-Cluster模式

Driver端是獨立的一個進程,與Spark-Submit不在一個進程中。

Driver端佔用YARN的一個Container。