全部產品
Search
文件中心

E-MapReduce:作業編輯

更新時間:Jul 01, 2024

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

背景資訊

前提條件

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

新增作業

  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. 作業運行後,您可以在日誌頁簽中查看作業啟動並執行日誌。
      作業記錄
    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。