在專案中,您可以通過建立作業來進行任務開發。本文為您介紹作業編輯相關的建立、設定和運行等操作。
背景資訊
前提條件
已建立專案或已被加入到專案中,詳情請參見專案管理。
新增作業
- 進入資料開發的專案列表頁面。
- 通過阿里雲帳號登入阿里雲E-MapReduce控制台。
- 在頂部功能表列處,根據實際情況選擇地區和資源群組。
- 單擊上方的資料開發頁簽。
- 單擊待編輯專案所在行的作業編輯。
- 新增作業。
- 在頁面左側,在需要操作的檔案夾上單擊右鍵,選擇新增作業。說明 您還可以通過在檔案夾上單擊右鍵,進行建立子檔案夾、重新命名檔案夾和刪除檔案夾操作。
- 在新增作業對話方塊中,輸入作業名稱和作業描述,從作業類型列表中,選擇建立的作業類型。
目前E-MapReduce資料開發支援的作業類型有:Shell、Hive、Hive SQL、Spark、SparkSQL、Spark Shell、Spark Streaming、MR、Sqoop、Pig 、Flink、Streaming SQL、Presto SQL和Impala SQL。
說明 建立作業時作業類型一經確定,不能修改。 - 單擊確定。作業建立成功後,就可以做相應的作業設定、作業編輯等操作了。
- 在頁面左側,在需要操作的檔案夾上單擊右鍵,選擇新增作業。
設定作業
各類作業類型的開發與設定,請參見作業部分。以下內容介紹的是作業的基礎設定、進階設定、共用庫和警示設定。
- 在作業編輯頁面,單擊右上方的作業設定。
- 在作業設定面板,設定基礎資訊。
配置項 說明 作業概要 作業名稱 您建立作業的名稱。 作業類型 您建立作業的類型。 失敗重試次數 作業運行失敗後的重試次數,可以選擇的重試次數範圍為:0~5次。 失敗策略 作業運行失敗後支援的策略如下: - 暫停當前工作流程:作業運行失敗後,不再繼續執行當前工作流程。
- 繼續執行下一個作業:作業運行失敗後,繼續執行下一個作業。
根據業務情況,可以開啟或者關閉使用最新作業內容和參數開關。- 關閉:作業失敗後重新執行時,使用初始作業內容和參數產生工作執行個體。
- 開啟:作業失敗後重新執行時,使用最新的作業內容和參數產生工作執行個體。
作業描述 單擊右側的編輯,可以修改作業的描述。 運行資源 單擊右側的表徵圖,添加作業執行所依賴的JAR包或UDF等資源。 您需要將資源先上傳至OSS,然後在運行資源中直接添加即可。
配置參數 指定作業代碼中所引用的變數的值。您可以在代碼中引用變數,格式為${變數名}。 單擊右側的表徵圖,添加Key和Value,根據需要選擇是否為Value進行加密。其中,Key為變數名,Value為變數的值。另外,您還可以根據調度啟動時間在此配置時間變數,詳情請參見作業日期設定。
- 在作業設定面板,單擊進階設定頁簽。
配置項 說明 模式 - 提交節點包括以下兩種模式,詳情請參見作業提交模式說明。
- 在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的記憶體配額。 - 提交節點包括以下兩種模式,詳情請參見作業提交模式說明。
- 在作業設定面板,單擊共用庫頁簽。在依賴庫地區,填寫庫列表。
執行作業需要依賴一些資料來源相關的庫檔案。E-MapReduce將這些庫以依賴庫的形式發布在調度服務的倉庫中,在建立作業時需要指定使用哪個版本的依賴庫。您只需設定相應的依賴庫版本,例如
sharedlibs:streamingsql:datasources-bundle:2.0.0
。 - 在作業設定面板,單擊警示設定頁簽。
配置項 說明 執行失敗 設定作業執行失敗時,是否通知到使用者警示組或DingTalk警示組。 啟動逾時 設定作業啟動逾時時,是否通知到使用者警示組或DingTalk警示組。 作業執行逾時 設定作業執行逾時時,是否通知到使用者警示組或DingTalk警示組。
在作業中添加註解
進行資料開發時,您可以通過在作業內容裡添加特定的註解來添加作業參數。註解的格式如下。
!!! @<註解名稱>: <註解內容>
說明
!!!
必須頂格,並且每行一個註解。當前支援的註解如下。
註解名稱 | 說明 | 樣本 |
rem | 表示一行注釋。 |
|
env | 添加一個環境變數。 |
|
var | 添加一個自訂變數。 |
|
resource | 添加一個資源檔。 |
|
sharedlibs | 添加依賴庫,僅對Streaming SQL作業有效。包含多個依賴庫時,依賴庫間用英文半形逗號(,)隔開。 |
|
scheduler.queue | 設定提交佇列。 |
|
scheduler.vmem | 設定申請記憶體,單位MB。 |
|
scheduler.vcores | 設定申請的核心數。 |
|
scheduler.priority | 設定申請的優先順序,取值範圍為1~100。 |
|
scheduler.user | 設定提交使用者名稱。 |
|
重要
使用註解時,需要注意以下事項:
- 無效註解將被自動跳過。例如,設定未知註解、註解內容不符合預期等。
- 註解中的作業參數優先順序高於作業配置中的參數,如果作業註解和作業配置中有相同的參數,則以作業註解為準。
運行作業
- 執行作業。
- 在建立的作業頁面,單擊右上方的運行來執行作業。
- 在運行作業對話方塊中,選擇資源群組和執行叢集。
- 單擊確定。
- 查看作業作業記錄。
- 作業運行後,您可以在日誌頁簽中查看作業啟動並執行日誌。
- 單擊運行記錄頁簽,可以查看工作執行個體的運行情況。
- 單擊目標運行記錄右側的詳情,跳轉到營運中心,可以查看工作執行個體的詳細資料。
作業可執行操作
在作業編輯地區,您可以在作業名稱上單擊右鍵,執行如下操作。
操作 | 說明 |
複製作業 | 在相同檔案夾下,複製當前作業的配置,產生一個新的作業。 |
重新命名作業 | 重新命名作業名稱。 |
刪除作業 | 只有在作業沒有關聯工作流程,或關聯的工作流程沒有在運行或調度時,才可以被刪除。 |
作業提交模式說明
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。 |