在專案中,您可以通過建立作業來進行任務開發。本文為您介紹作業編輯相關的建立、設定和運行等操作。
背景資訊
前提條件
已建立專案或已被加入到專案中,詳情請參見專案管理。
新增作業
-
進入資料開發的專案列表頁面。
-
通過阿里雲帳號登入阿里雲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 |
設定提交使用者名稱。 |
|
使用註解時,需要注意以下事項:
-
無效註解將被自動跳過。例如,設定未知註解、註解內容不符合預期等。
-
註解中的作業參數優先順序高於作業配置中的參數,如果作業註解和作業配置中有相同的參數,則以作業註解為準。
運行作業
-
執行作業。
-
在建立的作業頁面,單擊右上方的运行來執行作業。
-
在运行作业對話方塊中,選擇資源群組和執行叢集。
-
單擊确定。
-
-
查看作業作業記錄。
-
作業運行後,您可以在日志頁簽中查看作業啟動並執行日誌。
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###### -
單擊运行记录頁簽,可以查看工作執行個體的運行情況。
-
單擊目標運行記錄右側的详情,跳轉到运维中心,可以查看工作執行個體的詳細資料。
-
作業可執行操作
在作業編輯地區,您可以在作業名稱上單擊右鍵,執行如下操作。
|
操作 |
說明 |
|
複製作業 |
在相同檔案夾下,複製當前作業的配置,產生一個新的作業。 |
|
重新命名作業 |
重新命名作業名稱。 |
|
删除作业 |
只有在作業沒有關聯工作流程,或關聯的工作流程沒有在運行或調度時,才可以被刪除。 |
作業提交模式說明
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。 |
|