簡介
-
什麼是DataWorks:
- DataWorks(資料工場,原大資料開發套件)是阿里雲重要的PaaS(Platform-as-a-Service)平臺產品,為您提供資料整合、資料開發、資料地圖、資料質量和資料服務等全方位的產品服務,一站式開發管理的介面,幫助企業專注於資料價值的挖掘和探索。
- DataWorks支援多種計算和儲存引擎服務,包括離線計算MaxCompute、開源大資料引擎E-MapReduce、實時計算(基於Flink)、機器學習PAI、圖計算服務Graph Compute和互動式分析服務等,並且支援使用者自定義接入計算和儲存服務。DataWorks為您提供全鏈路智慧大資料及AI開發和治理服務。
-
學習路徑:
-
實踐案例目標:將MongoDB資料庫中的目標日誌集合同步至阿里雲DataWorks中,在DataWorks中進行日誌解析處理後,將處理後的新資料同步到MongoDB資料庫的新集合中,整個業務流程的執行間隔儘量縮短。
-
實踐案例步驟:
- 準備阿里雲賬號並登入
- 建立並配置工作空間
- 購買獨享資料整合資源組並繫結
- 建立並配置資料來源
- 配置並建立MaxCompute表
- 建立業務流程
- 建立並配置離線資料增量同步節點
- 下載IntelliJ IDEA的MaxCompute Studio外掛並配置
- 使用MaxCompute Studio開發MapReduce功能的Java程式
- 將MapReduce功能程式打包上傳為資源
- 建立並配置ODPS MR節點
- 關聯各個節點
- 提交業務流程並檢視執行結果
步驟
一、準備阿里雲賬號並登入
Ⅰ、註冊阿里雲賬號
-
官方文件:準備阿里雲賬號
-
步驟圖示:
-
官網首頁點選右上角"立即註冊"。
-
選擇註冊方式進行註冊。
-
註冊完成後,官網首頁右上角可登入賬號。
-
登入成功後,點選右上角"我的阿里雲"圖示,會出現賬戶資訊邊欄。
-
在邊欄中點選"賬號管理",進入賬號管理頁面。
-
在賬號管理頁面完成實名認證。
-
完成實名認證後,滑鼠箭頭懸停在頁面右上角的頭像上,在出現的懸浮框中點選"AccessKey管理",進入AccessKey管理頁面。
-
目前阿里雲官方建議禁用主賬號的AccessKey,使用RAM子使用者AccessKey來進行API呼叫,因此點選"開始使用子使用者AccesssKey",進入RAM訪問控制頁面,進行下一步:建立RAM子賬號。
-
Ⅱ、建立RAM子賬號
-
官方文件:準備RAM使用者
-
步驟圖示:
-
在RAM訪問控制頁面,點選"建立使用者"按鈕,進入建立使用者頁面。
-
在建立使用者頁面,填寫賬戶資訊,勾選"控制檯訪問"與"程式設計訪問",下面的密碼選項根據需求自主選擇,完成後點選"確定",建立成功後,及時儲存AccessKey相關資訊(下載CSV檔案)。
-
選擇RAM訪問控制頁面左側選單欄的"人員管理"中的"使用者組"標籤,在切換後的頁面中點選"建立使用者組",完善使用者組資訊後,點選"確定"按鈕,完成使用者組的建立。
-
選中建立好的使用者組,點選"新增組成員",在彈出的邊欄中,選中剛才建立好的RAM使用者,點選"確定",將RAM使用者繫結到使用者組。
-
選中剛才的使用者組,點選"新增許可權",會出現"新增許可權"右側邊欄。在邊欄中,根據需求選擇"授權範圍";在"選擇許可權"模組下,根據需求儘量選擇小許可權新增,當前先在搜尋欄中搜尋"DataWorks",點選新增DataWorks使用許可權,之後有別的許可權需求再進行新增。選擇好許可權後,點選"確定"完成。
-
完成許可權新增後,點選右上角"我的阿里雲"圖示,在出現賬戶資訊邊欄下方,點選退出登入,退出當前阿里雲賬號。
-
退出登入後,點選阿里雲首頁右上方"登入",在登入頁面中點選"RAM使用者登入",使用RAM賬號進行登入。遵循阿里雲安全最佳實踐,之後均使用RAM賬號進行DataWorks開發操作,在需要新增許可權、購買阿里雲產品等特殊情況時,再使用阿里雲主賬戶進行操作(不同的瀏覽器可以分別登入不同賬號)。
-
二、建立並配置工作空間
-
官方文件:建立工作空間
-
步驟圖示:
-
RAM賬號登入成功後,在阿里雲首頁右上方點選"控制檯",進入管理控制檯頁面。
-
在管理控制檯頁面,點選左上角的選單按鈕,會出現側邊選單欄,點選"DataWorks"標籤,頁面會切換到對應的DataWorks頁面,點選"免費開通基礎版",進入DataWorks購買頁面,購買完成後要回到此頁面。
-
在DataWorks購買頁面,根據自己需求選擇地域(可以選擇離自己最近的地域),版本選擇基礎版(其他版本需要付費)即可滿足本次實踐需求,然後勾選同意服務協議,點選"確認訂單並支付",完成DataWorks基礎版的開通。
-
完成DataWorks基礎版的開通後,回到剛才的管理控制檯頁,重新點選"DataWorks"標籤,可以進入新的DataWorks控制檯頁,點選左側選單欄的"工作空間列表",切換到工作空間列表頁,點選"建立工作空間"按鈕,準備建立一個新的工作空間。
-
點選"建立工作空間"按鈕後,頁面右側會彈出邊欄,填寫工作空間名稱等資訊,為簡化操作流程,本次實踐選擇"簡單模式"進行演示,完成後點選"下一步",將選擇工作空間引擎。
-
進入選擇引擎頁面,需要選擇計算引擎服務為MaxCompute,此時還未開通MaxCompute服務,點選"MaxCompute"標籤裡的"按量付費"選項後的"去購買"連結,跳轉到MaxCompute購買頁面,購買完成後要回到此頁面。
-
進入MaxCompute購買頁面,商品型別選擇"按量計費",區域根據自己的需求選擇,規格型別選擇"標準版",然後點選"立即購買",完成MaxCompute服務的啟用。
-
MaxCompute服務啟用後,回到建立工作空間的選擇引擎頁面,選中"MaxCompute"標籤裡的"按量付費"選項(若頁面沒有重新整理,無法選中,點一下"上一步",再點一下"下一步"來重新整理頁面),然後點選"下一步",準備配置引擎詳情。
-
進入引擎詳情頁面,自主填寫例項顯示名稱和MaxCompute專案名稱,其他配置選項保持預設即可,然後點選"建立工作空間",完成工作空間的建立。
-
三、購買獨享資料整合資源組並繫結
-
注意:由於本人在其他業務流程中使用了資料整合中"一鍵實時同步至MaxCompute的功能"(不支援MongoDB資料來源),而實時同步功能僅支援執行在獨享資料整合資源組上,因此購買了獨享資料整合資源組。而本次實踐中也就使用了之前購買的獨享資料整合資源組(不用白不用)。而本次實踐由於只使用了離線同步功能,也可使用公共資源組(免費)進行資料整合,如要使用公共資源組,可跳過此步驟。
-
官方文件:新增和使用獨享資料整合資源組
-
步驟圖示:
-
進入DataWorks控制檯頁面,在左側選單欄切換到"工作空間列表"頁面,點選頁面右上角的"購買獨享資源組",開啟DataWorks獨享資源購買頁面。
-
進入DataWorks獨享資源購買頁面,根據自己的需求選擇地域和可用區(要與工作空間所在的地域相同),獨享資源型別選擇"獨享資料整合資源",本次實踐只需購買最低限度的獨享整合資源,因此下面選項依次選擇"4 vCPU 8 GiB"、"1"、"1個月",然後點選"立即購買",完成獨享資料整合資源的購買。
-
完成獨享資料整合資源組的購買後,進入DataWorks控制檯頁面,在左側選單欄切換到"資源組列表"頁面,然後點選"建立獨享資源組",會出現右側邊欄。資源組型別選擇"獨享資料整合資源組",資源組名稱自主填寫,資源組備註自主填寫,訂單號選擇剛才購買的獨享資料整合資源的訂單號,然後點選"確定",完成獨享資料整合資源組的建立。
-
建立好獨享資料整合資源組後,在資源組列表頁面中,點選剛建立完成的資源組右端的"修改歸屬工作空間"連結,會出現修改歸屬工作空間的彈出框,選擇剛才建立的工作空間,點選右端對應的"繫結",完成獨享資料整合資源組與工作空間的繫結。
-
四、建立並配置資料來源
-
官方文件:配置資料來源
-
步驟圖示:
-
在DataWorks控制檯的工作空間列表頁面中,點選目標工作空間右端"操作"列中的"進入資料整合"連結,開啟資料整合頁面。
-
進入資料整合頁面中,點選展開左側選單欄中的"資料來源"項,在其展開的子選單中,點選"資料來源列表",開啟資料來源管理頁面。
-
進入資料來源管理頁面中,點選頁面右上角的"新增資料來源",會出現新增資料來源的彈出框。本次實踐的目標資料來源為MongoDB資料庫,因此在彈出框中找到"NoSQL"標籤下"MongoDB"圖示,點選該圖示,會出現新的"新增MongoDB資料來源"彈出框。
-
在新增MongoDB資料來源的彈出框中,需要填寫資料來源相關資訊。本次實踐的MongoDB資料來源為阿里云云資料庫MongoDB版,所以資料來源型別選擇"阿里雲例項模式",自主填寫資料來源名稱和資料來源描述,地域選擇資料來源所在地域,例項ID填寫資料來源的例項ID(通過後面的問號圖示,可進入MongoDB管理控制檯的例項列表,複製"例項ID"填寫),自主填寫正確的資料庫名、使用者名稱、密碼。然後點選下面表格中"獨享資料整合資源組"這一行的"測試連通性",此時會連通失敗,需要新增獨享資料整合資源繫結的交換機網段至資料庫的白名單內(若使用的是公共資源組,則需要新增DataWorks工作空間所在區域的白名單IP至資料庫的白名單內)。因此下一步要開啟DataWorks控制檯的"資源組列表"頁面去找到相關資訊。
-
進入"資源組列表"頁面中,點選目標獨享資料整合資源組的"操作"列中的"檢視資訊"連結,會出現"獨享資源組"的彈出框,複製"EIP地址"和"網段"的內容,下一步開啟MongoDB管理控制檯,準備新增資料庫的IP白名單。
-
進入MongoDB管理控制檯,選擇"副本集例項列表",找到目標MongoDB例項的行,展開後面的"操作"列,點選"管理"選項,開啟目標MongoDB例項的管理頁面。
-
進入MongoDB例項的管理頁面中,在左側選單欄點選"白名單設定"切換到對應頁面。點選頁面中的"新增白名單分組"按鈕,會出現右側"新增白名單分組"邊欄。在邊欄中自主填寫分組名,並將剛才獨享資源組的"EIP地址"和"網段"的內容填寫到"允許訪問IP名單"文字框中,用英文逗號分隔,然後點選"確定",完成將獨享資源組網段新增到資料來源白名單的操作,下一步回到新增MongoDB資料來源的頁面。
-
在新增MongoDB資料來源的頁面中,再次點選"測試連通性",此時連通狀態變為"可連通",然後點選"完成",完成MongoDB資料來源的建立。
-
同理,也建立一個新的MaxCompute資料來源(預設的MaxCompute資料來源"odps_first"直接用來執行任務會出問題)。在資料來源管理頁面中,點選"新增資料來源",會出現"新增MaxCompute(ODPS)資料來源"彈出框。在彈出框中,自主填寫"資料來源名稱"、"資料來源描述","網路連線型別"選擇"阿里雲VPC","地域"勾選"與當前DataWorks同region","ODPS專案名稱"填寫當前的DataWorks工作空間名稱,"AccessKey ID"填寫當前登入的RAM賬號的AccessKey ID,"AccessKey Secret"填寫當前登入的RAM賬號的AccessKey Secret。然後同樣點選下面表格中"獨享資料整合資源組"這一行的"測試連通性",確認"連通狀態"為"可連通"。點選"完成",完成MaxCompute資料來源的建立。
-
五、配置並建立MaxCompute表
-
官方文件:建立MaxCompute表
-
步驟圖示:
-
在DataWorks控制檯的工作空間列表頁面中,點選目標工作空間所在行的"操作"列中的"進入資料開發"連結,開啟"DataStudio(資料開發)"頁面。
-
進入"DataStudio(資料開發)"頁面中,點選左側選單欄中的"表管理"項,切換到表管理頁面。然後點選表管理選單中的新建按鈕,會出現"新建表"彈出框,準備新建一張輸入表用於儲存來自資料來源的離線同步日誌資料。在彈出框中選擇引擎型別為"MaxCompute",自主填寫表名,然後點選新建,會出現MaxCompute表的編輯頁面。
-
在MaxCompute表的編輯頁面,"基本屬性"模組中,自主填寫"中文名"與"描述"。"物理模型設計"模組中,"分割槽型別"選擇"分割槽表","生命週期"自主勾選(超過生命週期的未更新資料會被清除),"表型別"選擇"內部表"。"表結構設計"模組中,自主新增欄位,分割槽新增日、時、分三種粒度的分割槽,其中日級分割槽的"日期分割槽格式"可以填寫日期格式(例如:yyyymmdd)。也可以使用DDL模式設定表結構。設定完表結構後,點選"提交到生產環境",完成"輸入表"的建立。同理,自主建立一張類似的"輸出表",用於儲存此次實踐中日誌解析完成後產生的資料。至此完成兩張MaxCompute表的建立。
-
六、建立業務流程
-
官方文件:建立業務流程
-
步驟圖示:
-
在DataStudio(資料開發)頁面,點選左側選單欄中的"資料開發"項,切換到資料開發頁面。然後點選資料開發選單中的新建按鈕展開子選單,點選子選單中的"業務流程",會出現"新建業務流程"彈出框。
-
在"新建業務流程"彈出框中,自主填寫"業務名稱"與"描述",然後點選"新建",新建業務流程成功,自動進入該業務流程管理頁面。
-
七、建立並配置離線資料增量同步節點
-
官方文件:配置離線同步任務
-
步驟圖示:
-
在業務流程管理頁面中,點選左側節點列表中"資料整合"下的"離線同步"項,會出現"新建節點"彈出框。在彈出框中自主填寫"節點名稱",然後點選"提交",完成離線同步節點的新建。
-
離線同步節點新建完成後,業務流程管理頁面中會出現此節點,雙擊該節點圖示,會進入該離線同步節點的配置頁面。
-
進入離線同步節點配置頁面中,展開"01選擇資料來源"模組中"資料來源"下"資料來源"的下拉選單,找到並選中"MongoDB"項,選中後會看到提示:此資料來源不支援嚮導模式,需要使用指令碼模式配置同步任務,點選轉換為指令碼。由於離線同步節點配置嚮導還不支援MongoDB資料來源的同步,因此點選"點選轉換為指令碼"連結,節點配置頁面會從嚮導模式轉換為指令碼模式。
-
在離線同步節點指令碼模式配置頁面中,點選上方選單欄中的匯入模板按鈕,會出現"匯入模板"彈出框。在彈出框中,選擇"來源型別"為"MongoDB",自主選擇目標MongoDB的"資料來源";選擇"目標型別"為"ODPS",自主選擇目標ODPS的"資料來源"。然後點選"確認",配置頁面中會自動生成指令碼的程式碼模板,下一步在程式碼模板的基礎上進行指令碼的完善。
-
在離線同步節點指令碼模式配置頁面中,由於要從MongoDB同步到MaxCompute,根據MongoDB Reader和MaxCompute Writer的官方文件,自主修改完善指令碼。在編寫指令碼時要注意,由於離線同步任務的最小執行間隔為5分鐘一次,所以此次實踐要在每次離線同步任務定時執行時,獲取MongoDB中,定時任務執行時間往前五分鐘內的資料,塞入MaxCompute輸入表對應的分割槽中。因此參考DataWorks排程引數的官方文件,在頁面右端展開"排程配置"邊欄,然後在排程配置邊欄的"基礎屬性"模組下的"引數"文字框中輸入:
yyyy_mm_dd_min=$[yyyy-mm-dd-5/24/60] yyyy_mm_dd_max=$[yyyy-mm-dd] yyyymmdd_min=$[yyyymmdd-5/24/60] hh_mi_min=$[hh24:mi-5/24/60] hh_mi_max=$[hh24:mi] hh_min=$[hh24-5/24/60] mi_min=$[mi-5/24/60]
。接下來在指令碼程式碼中,在"Reader"部分的"query"項(用於對MongoDB資料進行時間範圍篩選)中填寫內容:{'date':{'$gte':ISODate('${yyyy_mm_dd_min}T${hh_mi_min}:00.000+0800'),'$lt':ISODate('${yyyy_mm_dd_max}T${hh_mi_max}:00.000+0800')}}
。此處"${yyyymmdd_min}"等是引用剛才設定的DataWorks排程引數,而"$gte"、"$lt"、"ISODate()"是MongoDB支援的條件操作符號和函式,將獲取資料的時間範圍限制為執行時間往前五分鐘內。下一步,要在指令碼程式碼中的"Writer"部分的"partition"項(分割槽)中填寫內容:partition_day=${yyyymmdd_min},partition_hour=${hh_min},partition_minute=${mi_min}
。此處也是引用剛才設定的DataWorks排程引數,設定資料塞入MaxCompute表的分割槽為執行時間往前五分鐘的時間分割槽。另外,"Writer"部分的"datasource"項注意要設定為自己新建的MaxCompute資料來源。完成指令碼的編輯後,下一步進行此離線同步節點的排程配置。 -
在排程配置邊欄中,對該離線同步節點的排程配置進行完善。在"基礎屬性"模組中,"責任人"選擇當前登入的RAM賬號;自主填寫"描述";"引數"的填寫內容上一步中已完成,不再贅述。在"時間屬性"模組中,自主選擇"生成例項方式",為方便後面快速測試,此次實踐選擇"釋出後即時生成";"時間屬性"選擇"正常排程";自主選擇"重跑屬性",通常選擇"執行成功後不可重跑,執行失敗後可以重跑";勾選"出錯自動重跑",自主選擇"出錯自動重跑次數"、"出錯自動重跑間隔",此次實踐使用其預設配置的次數與間隔;自主選擇"生效日期",此次實踐使用其預設配置,讓同步任務一直保持生效狀態;由於此次實踐希望整個業務流程的執行週期間隔儘量短一些,所以設定"排程週期"為"分鐘","開始時間"設定為"00:00"(被限制只能設定整時),"時間間隔"設定為最短的"05","結束時間"設定為"23:59"(被限制只能設定小時),以確保該節點跨天也會每五分鐘執行一次;自主選擇"超時時間",此次實踐選擇"系統預設";不勾選"依賴上一週期",這樣某一週期執行出錯不會影響之後的執行週期。"資源屬性"模組的"排程資源組"選擇預設的"公共排程資源組"即可。"排程依賴"模組暫時不進行配置。"節點上下文"模組在此次實踐中不需要配置。完成以上排程配置後,下一步對該節點進行資料整合資源組配置。
-
點選頁面右端選單欄的"資料整合資源組配置"項,將右邊邊欄切換到"資料整合資源組配置"頁面。在邊欄中,"方案"項選擇"獨享資料整合資源組",然後"獨享資料整合資源組"項自主選擇獨享資料整合資源組。若要使用公共資料整合資源組,"方案"項選擇"公共資源組"即可。資料整合資源組配置完成後,點選頁面上方選單欄的儲存按鈕,完成對離線同步節點的建立與配置。
-
同理,再建立一個類似的離線同步節點,用於將MaxCompute輸出表的資料同步到MongoDB的集合中。在編寫此指令碼時同樣有幾點要注意,在排程配置邊欄的"基礎屬性"模組下的"引數"文字框中輸入:
p_yyyymmdd=$[yyyymmdd-15/24/60] p_hh=$[hh24-15/24/60] p_mi=$[mi-15/24/60]
。在指令碼的"Reader"部分的"partition"項中填寫內容:partition_day=${p_yyyymmdd}/partition_hour=${p_hh}/partition_minute=${p_mi}
。在排程配置邊欄的"時間屬性"模組下,"排程週期"設定"分鐘","開始時間"設定"00:00","時間間隔"設定"05","結束時間"設定"23:59"。這樣該離線同步節點每次執行時會去同步MaxCompute輸出表中十五分鐘前的時間分割槽的資料。至此完成兩個離線同步節點的建立與配置,下一步準備開發DataWorks的MapReduce功能的JAR包,用於對日誌資料進行解析。
-
八、下載IntelliJ IDEA的MaxCompute Studio外掛並配置
-
官方文件:安裝MaxCompute Studio
-
步驟圖示:
-
開啟IntelliJ IDEA的主介面,展開上方選單欄的"File"項,點選展開的子選單中的"Settings...",會出現Settings彈出框。
-
在Settings彈出框中,點選左側選單欄中的"Plugins",使彈出框切換到外掛頁面。在外掛頁面中,點選上方的"Marketplace"標籤,然後再搜尋框中輸入"MaxCompute Studio",搜尋框下方會出現搜尋結果。點選MaxCompute Studio阿里雲官方外掛的"Install"按鈕,開始外掛的安裝。
-
外掛安裝完成後,會出現"Restart IDE"按鈕,點選該按鈕重啟IDEA,即可使用MaxCompute Studio外掛。下一步準備在IDEA中建立MaxCompute Studio專案,並連線到DataWorks中的MaxCompute專案。
-
重啟IDEA後,展開上方選單欄的"File"項,在"File"項的子選單中再次展開"New"項,點選"New"項的子選單中的"Project..."項,會出現"New Project"彈出框。
-
在"New Project"彈出框的左側選單欄中點選"MaxCompute Studio",然後點選"Next"按鈕,下一步設定專案名稱和路徑。
-
自主填寫專案名稱到"Project name"中,自主選擇專案儲存路徑到"Project location"中,然後點選"Finish"按鈕,完成建立MaxCompute Studio專案,下一步將此專案連線到DataWorks中的MaxCompute專案。
-
在IntelliJ IDEA的主介面,展開上方選單欄的"View"項,在"View"項的子選單中再次展開"Tool Windows"項,點選"Tool Windows"項的子選單中的"Project Explorer"項,會出現"Project Explorer"左側邊欄。
-
在側邊欄中,點選左上角的"+"圖示,會出現"Add MaxCompute project"彈出框。在彈出框中,將正在使用的RAM賬號的AccessKey ID填入"Access Id"中,將正在使用的RAM賬號的AccessKey Secret填入"Access Key"中,將DataWorks工作空間名稱填入"Project Name"中,然後點選"OK",完成MaxCompute專案的連線。成功連線後,便可以在IDEA介面左側的"Project Explorer"邊欄中檢視連線到的MaxCompute專案的詳情。
-
在IntelliJ IDEA的主介面,展開上方選單欄的"File"項,在"File"項的子選單中再次展開"New"項,點選"New"項的子選單中的"Module..."項,會出現"New Module"彈出框。
-
在"New Module"彈出框的左側選單中,點選"MaxCompute Java",在彈出框主頁面中自主設定"Module SDK"為1.8版本的JDK,然後點選"Next",下一步設定Module名稱。
-
在"Module name"中自主填寫模組名稱,然後點選"Finish",完成MaxCompute Java模組的建立,在IDEA的"Project"側邊欄中會出現對應的目錄結構。至此完成MaxCompute Studio外掛的下載與配置。
-
九、使用MaxCompute Studio開發MapReduce功能的Java程式
-
官方文件:開發MapReduce功能的Java程式
-
步驟圖示:
-
在IntelliJ IDEA主介面左側選單欄中點選"Project",展開"Project"側邊欄。在側邊欄中展開MaxCompute Studio專案的目錄結構,找到MaxCompute Java模組的目錄項,依次展開其下的"src"、"main"目錄項,選中"main"目錄結構下的"java"目錄項,滑鼠右擊調出右鍵選單。在右鍵選單中展開"New"項,點選"New"項的子選單中的"MaxCompute Java"項,會出現"Create new MaxCompute java class"彈出框。
-
在"Create new MaxCompute java class"彈出框下方的選單中點選"Driver"項,然後在彈出框的"Name"文字框中自主輸入Driver名稱(例如:MainDriver),按"Enter"鍵完成Driver檔案的建立。
-
Driver建立完成後,在"Project"側邊欄中找到Driver檔案,雙擊開啟其編輯頁面。在編輯頁面中,可以看到自動生成了一些Java程式碼模板,而該Driver類中只有一個main方法,表明此Driver類是整個MapReduce功能的Java程式的入口。我們用與建立Driver類同樣的方式,建立Mapper類與Reducer類,然後根據MapReduce示例程式的官方文件,自主完成Driver類、Mapper類、Reducer類的開發,實現所需的功能(例如本次實踐中進行了日誌解析功能的實現),這裡不深入展開詳細的過程。開發結束前,請自主進行本地測試,使程式通過本地編譯和測試,確保功能可用。
-
十、將MapReduce功能程式打包上傳為資源
-
官方文件:打包、上傳Java程式
-
步驟圖示:
-
完成MapReduce功能的Java程式開發後,要對程式進行打包獲得JAR包。在IntelliJ IDEA主介面的"Project"側邊欄中選中Driver檔案,滑鼠右擊調出右鍵選單。在右鍵選單中點選"Deploy to server...",會出現"Package a jar and submit resource"彈出框。
-
在"Package a jar and submit resource"彈出框中,由於之前已經配置過MaxCompute專案的連線,此時會自動填寫各項引數,只需點選"OK"按鈕,即可完成打包,下一步要將JAR包上傳為資源。
-
在"Project"側邊欄中展開MaxCompute Java模組下的"target"目錄項,在"target"目錄結構中選中上一步生成的JAR包。然後展開主介面上方選單欄中的"MaxCompute"項,點選展開的子選單中的"新增資源",會出現"Add Resource"彈出框。
-
在"Add Resource"彈出框中,因為剛才選中了生成的JAR包,此時會自動填寫各項引數,只需點選"OK"按鈕,即可將JAR包新增為阿里雲MaxCompute專案中的資源,下一步要將此資源新增到業務流程的資原始檔夾中。
-
開啟阿里雲的"DataStudio(資料開發)"頁面,展開頁面左側選單欄中的"MaxCompute"項,點選"MaxCompute"選單下的"MaxCompute資源",選單欄右邊的頁面會切換到"MaxCompute資源"編輯頁面。在"MaxCompute資源"編輯頁面中選中剛才上傳的JAR包資源,然後點選頁面下方的"新增到資料開發"按鈕,會出現"新建資源"彈出框。在"新建資源"彈出框中,引數"目標資料夾"裡自主選擇之前建立的業務流程,然後點選"新建"按鈕,成功將Jar包新增到業務流程的資源中,下一步將資源進行提交。
-
在DataWorks的"資料開發"頁面中,展開當前業務流程的列表,在列表中依次展開"MaxCompute"、"資源"項,雙擊剛新增的JAR包資源,進入該資源的編輯頁面,然後點選頁面上方選單欄中的提交按鈕,會出現"提交新版本"彈出框。
-
在"提交新版本"彈出框中,自主填寫"變更描述",然後點選"確認",完成資源的提交。資源提交成功後,在業務流程正式執行的時候,節點才能找到此資源。
-
十一、建立並配置ODPS MR節點
-
官方文件:建立ODPS MR節點
-
步驟圖示:
-
在阿里雲的"DataStudio(資料開發)"頁面中,點選左側選單欄中的"資料開發"項,選單欄右邊的頁面會切換到"資料開發"頁面。在"資料開發"頁面中,展開"業務流程"列表,在"業務流程"列表中,雙擊目標業務流程,開啟目標業務流程的編輯頁面。在業務流程編輯頁面的左側選單欄中雙擊"ODPS MR"項,會出現"新建節點"彈出框。在"新建節點"彈出框中,自主填寫"節點名稱",然後點選"提交"按鈕,完成ODPS MR節點的建立。
-
完成ODPS MR節點的建立後,在業務流程的編輯頁面中,雙擊剛建立的ODPS MR節點,進入ODPS MR節點的編輯頁面。
-
在ODPS MR節點的編輯頁面中,編輯區域的末尾新增一行程式碼:
--@resource_reference{""}
。並將游標放到兩個雙引號之間,下一步準備引入剛新增的資源。 -
在ODPS MR節點編輯頁面左邊的"資料開發"頁面中,展開當前業務流程的列表,在列表中依次展開"MaxCompute"、"資源"項,選中剛新增的JAR包資源,滑鼠右擊調出右鍵選單。在右鍵選單中點選"引用資源",剛才ODPS MR節點編輯區域的游標所在位置就會自動新增引用資源的名稱,並在編輯區域的開頭自動生成一行程式碼,下一步準備新增一行呼叫JAR包資源執行的程式碼。
-
在編輯區域末尾,再新增一行呼叫JAR包資源的Driver類的main方法的程式碼,格式類似於
jar -resources *-*.*-snapshot.jar -classpath ./*-*.*-snapshot.jar *.*Driver <in_table>[|<partition_key>=<val>[/<partition_key>=<val>...]] <out_table>[|<partition_key>=<val>[/<partition_key>=<val>...]]
。此行程式碼的前半部分("in_table"之前的部分),用於指定呼叫的JAR包資源的名稱和位置,以及其中的Driver類的全類名;程式碼的後半部分("in_table"以後的部分),是Driver類中main方法的入參(對應形參String[] args),因此後半部分MaxCompute輸入表與輸出表的程式碼格式,是根據之前自主編寫Driver類時main方法中的解析方式來填寫的,上面的示例程式碼僅供參考,請自主完善。本次實踐中,MaxCompute輸入表或輸出表需要指定時間分割槽,也跟之前一樣使用排程引數動態指定,因此在排程配置邊欄的"基礎屬性"模組下的"引數"文字框中輸入:p_yyyymmdd=$[yyyymmdd-10/24/60] p_hh=$[hh24-10/24/60] p_mi=$[mi-10/24/60]
,在MaxCompute輸入表與輸出表指定分割槽的程式碼部分填寫內容:partition_day=${p_yyyymmdd}/partition_hour=${p_hh}/partition_minute=${p_mi}
。完成ODPS MR節點的程式碼編輯後,下一步準備進行其排程配置。 -
在排程配置邊欄中,對該ODPS MR節點的排程配置進行完善。在"基礎屬性"模組中,"責任人"選擇當前登入的RAM賬號;自主填寫"描述";"引數"的填寫內容上一步中已完成,不再贅述。在"時間屬性"模組中,自主選擇"生成例項方式",為方便後面快速測試,此次實踐選擇"釋出後即時生成";"時間屬性"選擇"正常排程";自主選擇"重跑屬性",通常選擇"執行成功後不可重跑,執行失敗後可以重跑";勾選"出錯自動重跑",自主選擇"出錯自動重跑次數"、"出錯自動重跑間隔",此次實踐使用其預設配置的次數與間隔;自主選擇"生效日期",此次實踐使用其預設配置,讓同步任務一直保持生效狀態;由於此次實踐希望整個業務流程的執行週期間隔儘量短一些,所以設定"排程週期"為"分鐘","開始時間"設定為"00:00"(被限制只能設定整時),"時間間隔"設定為最短的"05","結束時間"設定為"23:59"(被限制只能設定小時),以確保該節點跨天也會每五分鐘執行一次;自主選擇"超時時間",此次實踐選擇"系統預設";不勾選"依賴上一週期",這樣某一週期執行出錯不會影響之後的執行週期。"資源屬性"模組的"排程資源組"選擇預設的"公共排程資源組"即可。"排程依賴"模組暫時不進行配置。"節點上下文"模組在此次實踐中不需要配置。完成以上排程配置後,點選頁面上方選單欄的儲存按鈕,完成對ODPS MR節點的建立與配置。
-
十二、關聯各個節點
-
官方文件:配置節點的排程和依賴屬性
-
步驟圖示:
-
目前業務流程裡總共建立並配置了三個節點:一個從MongoDB表到MaxCompute表的離線同步節點,用於獲取日誌資料,每次同步執行時間往前五分鐘到執行時間的資料;一個從MaxCompute表到MaxCompute表的ODPS MR節點,用於解析日誌資料,每次同步執行時間往前十分鐘到執行時間往前五分鐘的資料;一個從MaxCompute表到MongoDB表的離線同步節點,用於輸出日誌資料,每次同步執行時間往前十五分鐘到執行時間往前十分鐘的資料。本次實踐中,這三個節點在業務流程中並行執行,互相之間不存在上下游關係,因此將這三個節點的父節點均設定為工作空間根節點即可。下面進行步驟演示,對三個節點執行同樣的操作即可。首先選中一個節點雙擊,進入節點編輯頁面。
-
在節點編輯頁面右端展開"排程配置"邊欄,然後在排程配置邊欄的"排程依賴"模組下的引數項"依賴的上游節點"後面點選"使用工作空間根節點"按鈕,下面的父節點列表中會自動新增一條工作空間根節點資料。然後點選頁面上方選單欄的提交按鈕,會出現"請注意"彈出框。
-
在"請注意"彈出框中,點選"確認"儲存修改。儲存成功後,會出現"提交新版本"彈出框。
-
在"提交新版本"彈出框中,自主填寫"變更描述",然後點選"確認",完成節點的提交。節點提交後,該節點就會正式執行,開始進行週期排程。至此完成將三個節點繫結到工作空間根節點下的操作,並將三個節點成功進行了提交。
-
十三、提交業務流程並檢視執行結果
-
官方文件:節點執行及排錯
-
步驟圖示:
-
上一步中,業務流程中的三個節點已經成功進行了提交併開始執行,而在業務流程編輯頁面中,點選上方選單欄的提交按鈕,也可以對節點進行統一提交。
-
業務流程提交併執行後,我們可以點選頁面上方選單欄中的前往運維按鈕,或者頁面右上角的"運維中心"連結,開啟DataWorks的"運維中心(工作流)"頁面,準備檢視各個節點週期任務的執行結果。
-
在"運維中心(工作流)"頁面左側選單欄中展開"週期任務運維"項,在子選單中點選"週期例項",切換到週期例項列表頁面。在週期例項列表頁面上方搜尋欄中,搜尋條件的"業務日期"(業務日期為實際執行日期的前一天)選擇"全部",勾選"我的出錯節點",自主調整其他搜尋選項,點選搜尋欄右下角的"重新整理"可以更新搜尋結果。在下方週期例項列表中點選一個出錯例項,列表右側會出現該出錯例項的詳情頁面。在詳情頁面中,點選目標出錯節點,頁面右下角會出現該節點資訊的彈出框。在彈出框中點選檢視日誌,可以開啟該出錯節點執行時的日誌詳情頁面。根據異常日誌內容,我們就可以找到出錯原因,進行對應的調整,確保整個業務流程的正常執行。
-
結語
- 本次實踐中,雖然購買使用了獨享資料整合資源組,實際上使用公共資料整合資源組也可實現本實踐的功能需求。若沒有購買獨享資料整合資源組,能將整個業務流程的成本降到最低,只需支付MaxCompute服務的流量費用。
- 本次實踐僅使用了阿里雲的離線同步、離線計算功能,如果要使用實時同步、實時計算功能,通常需要購買開通相應的服務。
- 使用RAM賬號操作過程中,經常會出現許可權不足的情況,這時候使用另一種瀏覽器登入主賬戶,即可較為方便地在一臺電腦上進行授權或購買阿里雲服務,避免在一個瀏覽器上來回登入。
- 在實踐過程中經常會出現陌生的術語,或者找不到某一個需求對應的模組在哪裡,或者操作過程中遇到了錯誤進行不下去,可以多在阿里雲關鍵字搜尋頁面中思考關鍵字查詢對應的文件,實在解決不了,就提交工單諮詢阿里雲的技術人員即可。