EMR Spark Streaming節點用於處理高輸送量的即時資料流資料,並具備容錯機制,可以協助您快速恢複出錯的資料流。本文為您介紹如何建立EMR Spark Streaming節點並進行資料開發。
前提條件
已建立阿里雲EMR叢集,並註冊EMR叢集至DataWorks。操作詳情請參見新版資料開發:綁定EMR計算資源。
(可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發或空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員。
如果您使用的是主帳號,則可忽略該添加操作。
使用限制
僅支援使用Serverless資源群組(推薦)或獨享調度資源群組運行該類型任務。
不支援EMR on ACK 類型的Spark叢集建立使用EMR Spark Streaming節點進行任務開發。
操作步驟
在EMR Spark Streaming節點編輯頁面,執行如下開發操作。
建立並引用EMR JAR資源
如果您使用的是DataLake(新版資料湖)叢集,則可通過如下步驟引用EMR JAR資源。
說明若EMR Spark Streaming節點依賴的資源較大,則無法通過DataWorks頁面上傳。您可將資源存放至HDFS上,然後在代碼中進行引用。程式碼範例如下。
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 JAR資源。
詳情請參見資源管理。將產生的JAR包儲存在JAR資源的存放目錄
emr/jars下。單擊點擊上傳按鈕,上傳JAR資源。選擇儲存路徑、資料來源及資源群組。
單擊儲存按鈕進行儲存。
引用EMR JAR資源。
開啟建立的EMR Spark Streaming節點,停留在代碼編輯頁面。
在左側導覽列的資源管理中找到待引用資源,右鍵選擇引用資源。
選擇引用後,當EMR Spark Streaming節點的代碼編輯頁面出現如下引用成功提示時,表明已成功引用代碼資源。此時,需要執行下述命令。如下命令涉及的資源套件、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叢集可配置的進階參數存在部分差異,具體如下表。
更多開源Spark屬性參數,可在節點右側調度配置的中進行配置。
DataLake叢集:EMR on ECS
進階參數
配置說明
FLOW_SKIP_SQL_ANALYZE
SQL語句執行方式。取值如下:
true:表示每次執行多條SQL語句。false(預設值):表示每次執行一條SQL語句。
說明該參數僅支援用於資料開發環境測試回合流程。
queue
提交作業的調度隊列,預設為default隊列。關於EMR YARN說明,詳情請參見隊列基礎配置。
priority
優先順序,預設為1。
其他
您可以直接在進階配置裡追加自訂SparkConf參數。提交代碼時DataWorks會自行在命令中加上新增的參數。例如,
"spark.driver.memory" : "2g"。說明如需啟用Ranger許可權控制,請在設定全域Spark參數中添加配置
spark.hadoop.fs.oss.authorization.method=ranger,以確保Ranger許可權控制生效。更多參數配置詳情,請參見設定全域Spark參數。
執行SQL任務
在回合組態的計算資源中,選擇配置計算資源和DataWorks資源群組。
說明您還可以根據任務執行所需的資源情況來調度 CU。預設CU為
0.25。訪問公用網路或VPC網路環境的資料來源需要使用與資料來源測試連通性成功的調度資源群組。詳情請參見網路連通方案。
在工具列的參數對話方塊中選擇已建立的資料來源,單擊運行SQL任務。
如需定期執行節點任務,請根據業務需求配置調度資訊。配置詳情請參見節點調度配置。
節點任務配置完成後,需對節點進行發布。詳情請參見節點/工作流程發布。
任務發布後,您可以在營運中心查看周期任務的運行情況。詳情請參見營運中心入門。