EMR Spark Streaming節點用於處理高輸送量的即時資料流資料,並具備容錯機制,可以協助您快速恢複出錯的資料流。本文為您介紹如何建立EMR Spark Streaming節點並進行資料開發。
前提條件
已建立阿里雲EMR叢集,並註冊EMR叢集至DataWorks。操作詳情請參見註冊EMR叢集至DataWorks。
(可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發或空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員。
已購買Serverless資源群組並完成資源群組配置,包括綁定工作空間、網路設定等,詳情請參見新增和使用Serverless資源群組。
資料開發(DataStudio)中已建立商務程序。
資料開發(DataStudio)基於商務程序對不同開發引擎進行具體開發操作,所以您建立節點前需要先建立商務程序,操作詳情請參見建立商務程序。
使用限制
僅支援使用Serverless資源群組(推薦)或獨享調度資源群組運行該類型任務。
不支援EMR on ACK 類型的Spark叢集建立使用EMR Spark Streaming節點進行任務開發。
步驟一:建立EMR Spark Streaming節點
進入資料開發頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入資料開發。
建立EMR Spark Streaming節點。
按右鍵目標商務程序,選擇
。說明您也可以滑鼠移至上方至建立,選擇
。在建立節點對話方塊中,輸入名稱,並選擇引擎執行個體、節點類型及路徑。單擊確認,進入EMR Spark Streaming節點編輯頁面。
說明節點名稱支援大小寫字母、中文、數字、底線(_)和小數點(.)。
步驟二:開發EMR Spark Streaming任務
在EMR Spark Streaming節點編輯頁面雙擊已建立的節點,進入任務開發頁面,執行如下開發操作。
建立並引用EMR JAR資源
如果您使用的是DataLake(新版資料湖)叢集,則可通過如下步驟引用EMR JAR資源。
準備EMR JAR範例程式碼。
spark-submit --master yarn --deploy-mode cluster --name SparkPi --driver-memory 4G --driver-cores 1 --num-executors 5 --executor-memory 4G --executor-cores 1 --class org.apache.spark.examples.JavaSparkPi hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar 100
說明若EMR Spark Streaming節點依賴的資源較大,則無法通過DataWorks頁面上傳。您可將資源存放至HDFS上,然後在代碼中進行引用。程式碼範例如下。
建立EMR JAR資源,詳情請參見建立和使用EMR資源。首次使用需要進行一鍵授權。
引用EMR JAR資源。
開啟建立的EMR Spark Streaming節點,停留在代碼編輯頁面。
在
節點下,找到待引用資源,右鍵選擇引用資源。選擇資源後,當節點編輯頁面顯示
##@resource_reference{""}
格式的語句,表明資源引用成功。此時,需要執行下述命令。命令涉及的資源套件、Bucket名稱、路徑資訊等為本文樣本的內容,使用時,請替換為實際使用的資訊。##@resource_reference{"examples-1.2.0-shaded.jar"} --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>
開發SQL代碼
在EMR Spark Streaming節點的編輯頁面,輸入需要執行的作業代碼。樣本如下。
spark-submit --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>
樣本在DataWorks上傳的資源為
examples-1.2.0-shaded.jar
。access-key-id
及access-key-secret
需要替換為您所使用的阿里雲帳號的AccessKey ID及AccessKey Secret。您可以登入DataWorks控制台,滑鼠移至上方至頂部功能表列右側的帳戶圖片,進入AccessKey管理,擷取AccessKey ID及AccessKey Secret。EMR Spark Streaming節點編輯代碼時不支援備註陳述式。
如果您工作空間的資料開發中綁定多個EMR資料來源,則需要根據業務需求選擇合適的引擎。如果僅綁定一個EMR引擎,則無需選擇。
(可選)配置進階參數
您可在節點進階設定處配置特有屬性參數。更多屬性參數設定,請參考Spark Configuration。叢集可配置的進階參數具體如下表。
DataLake叢集:EMR on ECS
進階參數 | 配置說明 |
queue | 提交作業的調度隊列,預設為default隊列。關於EMR YARN說明,詳情請參見隊列基礎配置。 |
priority | 優先順序,預設為1。 |
其他 | 您也可以直接在進階配置裡追加自訂SparkConf參數。提交代碼時DataWorks會自行在命令中加上新增的參數。例如, |
執行SQL任務
在工具列單擊表徵圖,在參數對話方塊選擇已建立的調度資源群組,單擊運行。
說明訪問公用網路或VPC網路環境的資料來源需要使用與資料來源測試連通性成功的調度資源群組。詳情請參見網路連通方案。
如果您後續執行任務需要修改使用的資源群組,您可單擊帶參運行表徵圖,選擇需要更換的調度資源群組。
單擊表徵圖,儲存編寫的SQL語句。
(可選)煙霧測試 (Smoke Test)。
如果您希望在開發環境進行煙霧測試 (Smoke Test),可在執行節點提交或節點提交後執行煙霧測試 (Smoke Test),操作詳情請參見執行煙霧測試 (Smoke Test)。
步驟三:配置節點調度
如您需要周期性執行建立的節點任務,可單擊節點編輯頁面右側的調度配置,根據業務需求配置該節點任務的調度資訊。配置詳情請參見任務調度屬性配置概述。
您需要設定節點的重跑屬性和依賴的上遊節點,才可以提交節點。
步驟四:發布節點任務
節點任務配置完成後,需執行提交發佈動作,提交發布後節點即會根據調度配置內容進行周期性運行。
單擊工具列中的表徵圖,儲存節點。
單擊工具列中的表徵圖,提交節點任務。
提交時需在提交對話方塊中輸入變更描述,並根據需要選擇是否在節點提交後執行程式碼檢閱。
說明您需設定節點的重跑屬性和依賴的上遊節點,才可提交節點。
程式碼檢閱可對任務的代碼品質進行把控,防止由於任務代碼有誤,未經審核直接發布上線後出現任務報錯。如進行程式碼檢閱,則提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱。
如您使用的是標準模式的工作空間,任務提交成功後,需單擊節點編輯頁面右上方的發布,將該任務發布至生產環境執行,操作請參見發布任務。
後續步驟
任務提交發布後,會基於節點的配置周期性運行,您可單擊節點編輯介面右上方的營運,進入營運中心查看周期任務的調度運行情況。詳情請參見查看並管理周期任務。