阿里雲DataWorks實踐:資料整合+資料開發

conyoo發表於2021-02-26

簡介

  • 什麼是DataWorks:

  • 學習路徑:

  • 實踐案例目標:將MongoDB資料庫中的目標日誌集合同步至阿里雲DataWorks中,在DataWorks中進行日誌解析處理後,將處理後的新資料同步到MongoDB資料庫的新集合中,整個業務流程的執行間隔儘量縮短。

  • 實踐案例步驟:

    1. 準備阿里雲賬號並登入
    2. 建立並配置工作空間
    3. 購買獨享資料整合資源組並繫結
    4. 建立並配置資料來源
    5. 配置並建立MaxCompute表
    6. 建立業務流程
    7. 建立並配置離線資料增量同步節點
    8. 下載IntelliJ IDEA的MaxCompute Studio外掛並配置
    9. 使用MaxCompute Studio開發MapReduce功能的Java程式
    10. 將MapReduce功能程式打包上傳為資源
    11. 建立並配置ODPS MR節點
    12. 關聯各個節點
    13. 提交業務流程並檢視執行結果

步驟


一、準備阿里雲賬號並登入

Ⅰ、註冊阿里雲賬號

  • 官方文件:準備阿里雲賬號

  • 步驟圖示:

    1. 官網首頁點選右上角"立即註冊"。

      阿里雲立即註冊

    2. 選擇註冊方式進行註冊。

      阿里雲註冊方式

    3. 註冊完成後,官網首頁右上角可登入賬號。

      阿里雲登入入口

    4. 登入成功後,點選右上角"我的阿里雲"圖示,會出現賬戶資訊邊欄。

      首頁我的阿里雲圖示

    5. 在邊欄中點選"賬號管理",進入賬號管理頁面。

      我的阿里雲邊欄

    6. 在賬號管理頁面完成實名認證。

      實名認證

    7. 完成實名認證後,滑鼠箭頭懸停在頁面右上角的頭像上,在出現的懸浮框中點選"AccessKey管理",進入AccessKey管理頁面。

      AccessKey管理

    8. 目前阿里雲官方建議禁用主賬號的AccessKey,使用RAM子使用者AccessKey來進行API呼叫,因此點選"開始使用子使用者AccesssKey",進入RAM訪問控制頁面,進行下一步:建立RAM子賬號。

      開始使用子使用者AccesssKey

Ⅱ、建立RAM子賬號

  • 官方文件:準備RAM使用者

  • 步驟圖示:

    1. 在RAM訪問控制頁面,點選"建立使用者"按鈕,進入建立使用者頁面。

      RAM訪問控制

    2. 在建立使用者頁面,填寫賬戶資訊,勾選"控制檯訪問"與"程式設計訪問",下面的密碼選項根據需求自主選擇,完成後點選"確定",建立成功後,及時儲存AccessKey相關資訊(下載CSV檔案)。

      RAM使用者建立

    3. 選擇RAM訪問控制頁面左側選單欄的"人員管理"中的"使用者組"標籤,在切換後的頁面中點選"建立使用者組",完善使用者組資訊後,點選"確定"按鈕,完成使用者組的建立。

      建立使用者組

    4. 選中建立好的使用者組,點選"新增組成員",在彈出的邊欄中,選中剛才建立好的RAM使用者,點選"確定",將RAM使用者繫結到使用者組。

      新增使用者到組

    5. 選中剛才的使用者組,點選"新增許可權",會出現"新增許可權"右側邊欄。在邊欄中,根據需求選擇"授權範圍";在"選擇許可權"模組下,根據需求儘量選擇小許可權新增,當前先在搜尋欄中搜尋"DataWorks",點選新增DataWorks使用許可權,之後有別的許可權需求再進行新增。選擇好許可權後,點選"確定"完成。

      使用者組新增許可權

    6. 完成許可權新增後,點選右上角"我的阿里雲"圖示,在出現賬戶資訊邊欄下方,點選退出登入,退出當前阿里雲賬號。

      退出登入

    7. 退出登入後,點選阿里雲首頁右上方"登入",在登入頁面中點選"RAM使用者登入",使用RAM賬號進行登入。遵循阿里雲安全最佳實踐,之後均使用RAM賬號進行DataWorks開發操作,在需要新增許可權、購買阿里雲產品等特殊情況時,再使用阿里雲主賬戶進行操作(不同的瀏覽器可以分別登入不同賬號)。

      RAM使用者登入


二、建立並配置工作空間

  • 官方文件:建立工作空間

  • 步驟圖示:

    1. RAM賬號登入成功後,在阿里雲首頁右上方點選"控制檯",進入管理控制檯頁面。

      控制檯入口

    2. 在管理控制檯頁面,點選左上角的選單按鈕,會出現側邊選單欄,點選"DataWorks"標籤,頁面會切換到對應的DataWorks頁面,點選"免費開通基礎版",進入DataWorks購買頁面,購買完成後要回到此頁面。

      開通DataWorks基礎版

    3. 在DataWorks購買頁面,根據自己需求選擇地域(可以選擇離自己最近的地域),版本選擇基礎版(其他版本需要付費)即可滿足本次實踐需求,然後勾選同意服務協議,點選"確認訂單並支付",完成DataWorks基礎版的開通。

      購買DataWorks

    4. 完成DataWorks基礎版的開通後,回到剛才的管理控制檯頁,重新點選"DataWorks"標籤,可以進入新的DataWorks控制檯頁,點選左側選單欄的"工作空間列表",切換到工作空間列表頁,點選"建立工作空間"按鈕,準備建立一個新的工作空間。

      點選建立工作空間按鈕

    5. 點選"建立工作空間"按鈕後,頁面右側會彈出邊欄,填寫工作空間名稱等資訊,為簡化操作流程,本次實踐選擇"簡單模式"進行演示,完成後點選"下一步",將選擇工作空間引擎。

      填寫工作空間基本資訊

    6. 進入選擇引擎頁面,需要選擇計算引擎服務為MaxCompute,此時還未開通MaxCompute服務,點選"MaxCompute"標籤裡的"按量付費"選項後的"去購買"連結,跳轉到MaxCompute購買頁面,購買完成後要回到此頁面。

      MaxCompute開通入口

    7. 進入MaxCompute購買頁面,商品型別選擇"按量計費",區域根據自己的需求選擇,規格型別選擇"標準版",然後點選"立即購買",完成MaxCompute服務的啟用。

      購買MaxCompute

    8. MaxCompute服務啟用後,回到建立工作空間的選擇引擎頁面,選中"MaxCompute"標籤裡的"按量付費"選項(若頁面沒有重新整理,無法選中,點一下"上一步",再點一下"下一步"來重新整理頁面),然後點選"下一步",準備配置引擎詳情。

      選擇MaxCompute按量付費

    9. 進入引擎詳情頁面,自主填寫例項顯示名稱和MaxCompute專案名稱,其他配置選項保持預設即可,然後點選"建立工作空間",完成工作空間的建立。

      配置MaxCompute引擎詳情


三、購買獨享資料整合資源組並繫結

  • 注意:由於本人在其他業務流程中使用了資料整合中"一鍵實時同步至MaxCompute的功能"(不支援MongoDB資料來源),而實時同步功能僅支援執行在獨享資料整合資源組上,因此購買了獨享資料整合資源組。而本次實踐中也就使用了之前購買的獨享資料整合資源組(不用白不用)。而本次實踐由於只使用了離線同步功能,也可使用公共資源組(免費)進行資料整合,如要使用公共資源組,可跳過此步驟。

  • 官方文件:新增和使用獨享資料整合資源組

  • 步驟圖示:

    1. 進入DataWorks控制檯頁面,在左側選單欄切換到"工作空間列表"頁面,點選頁面右上角的"購買獨享資源組",開啟DataWorks獨享資源購買頁面。

      購買獨享資源組入口

    2. 進入DataWorks獨享資源購買頁面,根據自己的需求選擇地域和可用區(要與工作空間所在的地域相同),獨享資源型別選擇"獨享資料整合資源",本次實踐只需購買最低限度的獨享整合資源,因此下面選項依次選擇"4 vCPU 8 GiB"、"1"、"1個月",然後點選"立即購買",完成獨享資料整合資源的購買。

      購買獨享資料整合資源組

    3. 完成獨享資料整合資源組的購買後,進入DataWorks控制檯頁面,在左側選單欄切換到"資源組列表"頁面,然後點選"建立獨享資源組",會出現右側邊欄。資源組型別選擇"獨享資料整合資源組",資源組名稱自主填寫,資源組備註自主填寫,訂單號選擇剛才購買的獨享資料整合資源的訂單號,然後點選"確定",完成獨享資料整合資源組的建立。

      建立獨享資料整合資源組

    4. 建立好獨享資料整合資源組後,在資源組列表頁面中,點選剛建立完成的資源組右端的"修改歸屬工作空間"連結,會出現修改歸屬工作空間的彈出框,選擇剛才建立的工作空間,點選右端對應的"繫結",完成獨享資料整合資源組與工作空間的繫結。

      資源組繫結工作空間


四、建立並配置資料來源

  • 官方文件:配置資料來源

  • 步驟圖示:

    1. 在DataWorks控制檯的工作空間列表頁面中,點選目標工作空間右端"操作"列中的"進入資料整合"連結,開啟資料整合頁面。

      進入資料整合

    2. 進入資料整合頁面中,點選展開左側選單欄中的"資料來源"項,在其展開的子選單中,點選"資料來源列表",開啟資料來源管理頁面。

      開啟資料來源列表

    3. 進入資料來源管理頁面中,點選頁面右上角的"新增資料來源",會出現新增資料來源的彈出框。本次實踐的目標資料來源為MongoDB資料庫,因此在彈出框中找到"NoSQL"標籤下"MongoDB"圖示,點選該圖示,會出現新的"新增MongoDB資料來源"彈出框。

      選擇新增資料來源

    4. 在新增MongoDB資料來源的彈出框中,需要填寫資料來源相關資訊。本次實踐的MongoDB資料來源為阿里云云資料庫MongoDB版,所以資料來源型別選擇"阿里雲例項模式",自主填寫資料來源名稱和資料來源描述,地域選擇資料來源所在地域,例項ID填寫資料來源的例項ID(通過後面的問號圖示,可進入MongoDB管理控制檯的例項列表,複製"例項ID"填寫),自主填寫正確的資料庫名、使用者名稱、密碼。然後點選下面表格中"獨享資料整合資源組"這一行的"測試連通性",此時會連通失敗,需要新增獨享資料整合資源繫結的交換機網段至資料庫的白名單內(若使用的是公共資源組,則需要新增DataWorks工作空間所在區域的白名單IP至資料庫的白名單內)。因此下一步要開啟DataWorks控制檯的"資源組列表"頁面去找到相關資訊。

      MongoDB資料來源填寫資訊

    5. 進入"資源組列表"頁面中,點選目標獨享資料整合資源組的"操作"列中的"檢視資訊"連結,會出現"獨享資源組"的彈出框,複製"EIP地址"和"網段"的內容,下一步開啟MongoDB管理控制檯,準備新增資料庫的IP白名單。

      獨享整合資源組網段

    6. 進入MongoDB管理控制檯,選擇"副本集例項列表",找到目標MongoDB例項的行,展開後面的"操作"列,點選"管理"選項,開啟目標MongoDB例項的管理頁面。

      MongoDB管理入口

    7. 進入MongoDB例項的管理頁面中,在左側選單欄點選"白名單設定"切換到對應頁面。點選頁面中的"新增白名單分組"按鈕,會出現右側"新增白名單分組"邊欄。在邊欄中自主填寫分組名,並將剛才獨享資源組的"EIP地址"和"網段"的內容填寫到"允許訪問IP名單"文字框中,用英文逗號分隔,然後點選"確定",完成將獨享資源組網段新增到資料來源白名單的操作,下一步回到新增MongoDB資料來源的頁面。

      MongoDB加白名單

    8. 在新增MongoDB資料來源的頁面中,再次點選"測試連通性",此時連通狀態變為"可連通",然後點選"完成",完成MongoDB資料來源的建立。

      資料來源測試連通成功

    9. 同理,也建立一個新的MaxCompute資料來源(預設的MaxCompute資料來源"odps_first"直接用來執行任務會出問題)。在資料來源管理頁面中,點選"新增資料來源",會出現"新增MaxCompute(ODPS)資料來源"彈出框。在彈出框中,自主填寫"資料來源名稱"、"資料來源描述","網路連線型別"選擇"阿里雲VPC","地域"勾選"與當前DataWorks同region","ODPS專案名稱"填寫當前的DataWorks工作空間名稱,"AccessKey ID"填寫當前登入的RAM賬號的AccessKey ID,"AccessKey Secret"填寫當前登入的RAM賬號的AccessKey Secret。然後同樣點選下面表格中"獨享資料整合資源組"這一行的"測試連通性",確認"連通狀態"為"可連通"。點選"完成",完成MaxCompute資料來源的建立。

      新建MaxCompute資料來源


五、配置並建立MaxCompute表

  • 官方文件:建立MaxCompute表

  • 步驟圖示:

    1. 在DataWorks控制檯的工作空間列表頁面中,點選目標工作空間所在行的"操作"列中的"進入資料開發"連結,開啟"DataStudio(資料開發)"頁面。

      進入資料開發

    2. 進入"DataStudio(資料開發)"頁面中,點選左側選單欄中的"表管理"項,切換到表管理頁面。然後點選表管理選單中的新建按鈕,會出現"新建表"彈出框,準備新建一張輸入表用於儲存來自資料來源的離線同步日誌資料。在彈出框中選擇引擎型別為"MaxCompute",自主填寫表名,然後點選新建,會出現MaxCompute表的編輯頁面。

      新建MaxCompute表

    3. 在MaxCompute表的編輯頁面,"基本屬性"模組中,自主填寫"中文名"與"描述"。"物理模型設計"模組中,"分割槽型別"選擇"分割槽表","生命週期"自主勾選(超過生命週期的未更新資料會被清除),"表型別"選擇"內部表"。"表結構設計"模組中,自主新增欄位,分割槽新增日、時、分三種粒度的分割槽,其中日級分割槽的"日期分割槽格式"可以填寫日期格式(例如:yyyymmdd)。也可以使用DDL模式設定表結構。設定完表結構後,點選"提交到生產環境",完成"輸入表"的建立。同理,自主建立一張類似的"輸出表",用於儲存此次實踐中日誌解析完成後產生的資料。至此完成兩張MaxCompute表的建立。

      配置MaxCompute表


六、建立業務流程

  • 官方文件:建立業務流程

  • 步驟圖示:

    1. 在DataStudio(資料開發)頁面,點選左側選單欄中的"資料開發"項,切換到資料開發頁面。然後點選資料開發選單中的新建按鈕展開子選單,點選子選單中的"業務流程",會出現"新建業務流程"彈出框。

      新建業務流程

    2. 在"新建業務流程"彈出框中,自主填寫"業務名稱"與"描述",然後點選"新建",新建業務流程成功,自動進入該業務流程管理頁面。

      新建業務流程成功


七、建立並配置離線資料增量同步節點

  • 官方文件:配置離線同步任務

  • 步驟圖示:

    1. 在業務流程管理頁面中,點選左側節點列表中"資料整合"下的"離線同步"項,會出現"新建節點"彈出框。在彈出框中自主填寫"節點名稱",然後點選"提交",完成離線同步節點的新建。

      新建離線同步節點

    2. 離線同步節點新建完成後,業務流程管理頁面中會出現此節點,雙擊該節點圖示,會進入該離線同步節點的配置頁面。

      雙擊離線同步節點

    3. 進入離線同步節點配置頁面中,展開"01選擇資料來源"模組中"資料來源"下"資料來源"的下拉選單,找到並選中"MongoDB"項,選中後會看到提示:此資料來源不支援嚮導模式,需要使用指令碼模式配置同步任務,點選轉換為指令碼。由於離線同步節點配置嚮導還不支援MongoDB資料來源的同步,因此點選"點選轉換為指令碼"連結,節點配置頁面會從嚮導模式轉換為指令碼模式。

      離線同步轉換為指令碼模式

    4. 在離線同步節點指令碼模式配置頁面中,點選上方選單欄中的匯入模板按鈕,會出現"匯入模板"彈出框。在彈出框中,選擇"來源型別"為"MongoDB",自主選擇目標MongoDB的"資料來源";選擇"目標型別"為"ODPS",自主選擇目標ODPS的"資料來源"。然後點選"確認",配置頁面中會自動生成指令碼的程式碼模板,下一步在程式碼模板的基礎上進行指令碼的完善。

      離線同步節點指令碼模式

    5. 在離線同步節點指令碼模式配置頁面中,由於要從MongoDB同步到MaxCompute,根據MongoDB ReaderMaxCompute 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資料來源。完成指令碼的編輯後,下一步進行此離線同步節點的排程配置。

      離線同步指令碼注意事項

    6. 在排程配置邊欄中,對該離線同步節點的排程配置進行完善。在"基礎屬性"模組中,"責任人"選擇當前登入的RAM賬號;自主填寫"描述";"引數"的填寫內容上一步中已完成,不再贅述。在"時間屬性"模組中,自主選擇"生成例項方式",為方便後面快速測試,此次實踐選擇"釋出後即時生成";"時間屬性"選擇"正常排程";自主選擇"重跑屬性",通常選擇"執行成功後不可重跑,執行失敗後可以重跑";勾選"出錯自動重跑",自主選擇"出錯自動重跑次數"、"出錯自動重跑間隔",此次實踐使用其預設配置的次數與間隔;自主選擇"生效日期",此次實踐使用其預設配置,讓同步任務一直保持生效狀態;由於此次實踐希望整個業務流程的執行週期間隔儘量短一些,所以設定"排程週期"為"分鐘","開始時間"設定為"00:00"(被限制只能設定整時),"時間間隔"設定為最短的"05","結束時間"設定為"23:59"(被限制只能設定小時),以確保該節點跨天也會每五分鐘執行一次;自主選擇"超時時間",此次實踐選擇"系統預設";不勾選"依賴上一週期",這樣某一週期執行出錯不會影響之後的執行週期。"資源屬性"模組的"排程資源組"選擇預設的"公共排程資源組"即可。"排程依賴"模組暫時不進行配置。"節點上下文"模組在此次實踐中不需要配置。完成以上排程配置後,下一步對該節點進行資料整合資源組配置。

      離線同步節點排程配置

    7. 點選頁面右端選單欄的"資料整合資源組配置"項,將右邊邊欄切換到"資料整合資源組配置"頁面。在邊欄中,"方案"項選擇"獨享資料整合資源組",然後"獨享資料整合資源組"項自主選擇獨享資料整合資源組。若要使用公共資料整合資源組,"方案"項選擇"公共資源組"即可。資料整合資源組配置完成後,點選頁面上方選單欄的儲存按鈕,完成對離線同步節點的建立與配置。

      離線同步節點資料整合資源組配置

    8. 同理,再建立一個類似的離線同步節點,用於將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包,用於對日誌資料進行解析。

      離線同步節點MaxCompute到MongoDB


八、下載IntelliJ IDEA的MaxCompute Studio外掛並配置

  • 官方文件:安裝MaxCompute Studio

  • 步驟圖示:

    1. 開啟IntelliJ IDEA的主介面,展開上方選單欄的"File"項,點選展開的子選單中的"Settings...",會出現Settings彈出框。

      IDEA進入Settings

    2. 在Settings彈出框中,點選左側選單欄中的"Plugins",使彈出框切換到外掛頁面。在外掛頁面中,點選上方的"Marketplace"標籤,然後再搜尋框中輸入"MaxCompute Studio",搜尋框下方會出現搜尋結果。點選MaxCompute Studio阿里雲官方外掛的"Install"按鈕,開始外掛的安裝。

      安裝MaxCompute Studio

    3. 外掛安裝完成後,會出現"Restart IDE"按鈕,點選該按鈕重啟IDEA,即可使用MaxCompute Studio外掛。下一步準備在IDEA中建立MaxCompute Studio專案,並連線到DataWorks中的MaxCompute專案。

      外掛安裝後重啟IDEA

    4. 重啟IDEA後,展開上方選單欄的"File"項,在"File"項的子選單中再次展開"New"項,點選"New"項的子選單中的"Project..."項,會出現"New Project"彈出框。

      新建Project

    5. 在"New Project"彈出框的左側選單欄中點選"MaxCompute Studio",然後點選"Next"按鈕,下一步設定專案名稱和路徑。

      建立MaxCompute Studio專案

    6. 自主填寫專案名稱到"Project name"中,自主選擇專案儲存路徑到"Project location"中,然後點選"Finish"按鈕,完成建立MaxCompute Studio專案,下一步將此專案連線到DataWorks中的MaxCompute專案。

      設定MaxCompute專案名稱路徑

    7. 在IntelliJ IDEA的主介面,展開上方選單欄的"View"項,在"View"項的子選單中再次展開"Tool Windows"項,點選"Tool Windows"項的子選單中的"Project Explorer"項,會出現"Project Explorer"左側邊欄。

      開啟Project Explorer

    8. 在側邊欄中,點選左上角的"+"圖示,會出現"Add MaxCompute project"彈出框。在彈出框中,將正在使用的RAM賬號的AccessKey ID填入"Access Id"中,將正在使用的RAM賬號的AccessKey Secret填入"Access Key"中,將DataWorks工作空間名稱填入"Project Name"中,然後點選"OK",完成MaxCompute專案的連線。成功連線後,便可以在IDEA介面左側的"Project Explorer"邊欄中檢視連線到的MaxCompute專案的詳情。

      連線到MaxCompute專案

    9. 在IntelliJ IDEA的主介面,展開上方選單欄的"File"項,在"File"項的子選單中再次展開"New"項,點選"New"項的子選單中的"Module..."項,會出現"New Module"彈出框。

      建立JAVA Module入口

    10. 在"New Module"彈出框的左側選單中,點選"MaxCompute Java",在彈出框主頁面中自主設定"Module SDK"為1.8版本的JDK,然後點選"Next",下一步設定Module名稱。

      JAVA Module設定JDK

    11. 在"Module name"中自主填寫模組名稱,然後點選"Finish",完成MaxCompute Java模組的建立,在IDEA的"Project"側邊欄中會出現對應的目錄結構。至此完成MaxCompute Studio外掛的下載與配置。

      設定JAVA Module名稱


九、使用MaxCompute Studio開發MapReduce功能的Java程式

  • 官方文件:開發MapReduce功能的Java程式

  • 步驟圖示:

    1. 在IntelliJ IDEA主介面左側選單欄中點選"Project",展開"Project"側邊欄。在側邊欄中展開MaxCompute Studio專案的目錄結構,找到MaxCompute Java模組的目錄項,依次展開其下的"src"、"main"目錄項,選中"main"目錄結構下的"java"目錄項,滑鼠右擊調出右鍵選單。在右鍵選單中展開"New"項,點選"New"項的子選單中的"MaxCompute Java"項,會出現"Create new MaxCompute java class"彈出框。

      建立Driver入口

    2. 在"Create new MaxCompute java class"彈出框下方的選單中點選"Driver"項,然後在彈出框的"Name"文字框中自主輸入Driver名稱(例如:MainDriver),按"Enter"鍵完成Driver檔案的建立。

      建立Driver

    3. Driver建立完成後,在"Project"側邊欄中找到Driver檔案,雙擊開啟其編輯頁面。在編輯頁面中,可以看到自動生成了一些Java程式碼模板,而該Driver類中只有一個main方法,表明此Driver類是整個MapReduce功能的Java程式的入口。我們用與建立Driver類同樣的方式,建立Mapper類與Reducer類,然後根據MapReduce示例程式的官方文件,自主完成Driver類、Mapper類、Reducer類的開發,實現所需的功能(例如本次實踐中進行了日誌解析功能的實現),這裡不深入展開詳細的過程。開發結束前,請自主進行本地測試,使程式通過本地編譯和測試,確保功能可用。

      編輯Driver


十、將MapReduce功能程式打包上傳為資源

  • 官方文件:打包、上傳Java程式

  • 步驟圖示:

    1. 完成MapReduce功能的Java程式開發後,要對程式進行打包獲得JAR包。在IntelliJ IDEA主介面的"Project"側邊欄中選中Driver檔案,滑鼠右擊調出右鍵選單。在右鍵選單中點選"Deploy to server...",會出現"Package a jar and submit resource"彈出框。

      開啟Deploy to server

    2. 在"Package a jar and submit resource"彈出框中,由於之前已經配置過MaxCompute專案的連線,此時會自動填寫各項引數,只需點選"OK"按鈕,即可完成打包,下一步要將JAR包上傳為資源。

      打包上傳資源

    3. 在"Project"側邊欄中展開MaxCompute Java模組下的"target"目錄項,在"target"目錄結構中選中上一步生成的JAR包。然後展開主介面上方選單欄中的"MaxCompute"項,點選展開的子選單中的"新增資源",會出現"Add Resource"彈出框。

      IDEA新增資源

    4. 在"Add Resource"彈出框中,因為剛才選中了生成的JAR包,此時會自動填寫各項引數,只需點選"OK"按鈕,即可將JAR包新增為阿里雲MaxCompute專案中的資源,下一步要將此資源新增到業務流程的資原始檔夾中。

      IDEA新增資源確認

    5. 開啟阿里雲的"DataStudio(資料開發)"頁面,展開頁面左側選單欄中的"MaxCompute"項,點選"MaxCompute"選單下的"MaxCompute資源",選單欄右邊的頁面會切換到"MaxCompute資源"編輯頁面。在"MaxCompute資源"編輯頁面中選中剛才上傳的JAR包資源,然後點選頁面下方的"新增到資料開發"按鈕,會出現"新建資源"彈出框。在"新建資源"彈出框中,引數"目標資料夾"裡自主選擇之前建立的業務流程,然後點選"新建"按鈕,成功將Jar包新增到業務流程的資源中,下一步將資源進行提交。

      資源匯入業務流程中

    6. 在DataWorks的"資料開發"頁面中,展開當前業務流程的列表,在列表中依次展開"MaxCompute"、"資源"項,雙擊剛新增的JAR包資源,進入該資源的編輯頁面,然後點選頁面上方選單欄中的提交按鈕,會出現"提交新版本"彈出框。

      提交資源

    7. 在"提交新版本"彈出框中,自主填寫"變更描述",然後點選"確認",完成資源的提交。資源提交成功後,在業務流程正式執行的時候,節點才能找到此資源。

      確認提交資源


十一、建立並配置ODPS MR節點

  • 官方文件:建立ODPS MR節點

  • 步驟圖示:

    1. 在阿里雲的"DataStudio(資料開發)"頁面中,點選左側選單欄中的"資料開發"項,選單欄右邊的頁面會切換到"資料開發"頁面。在"資料開發"頁面中,展開"業務流程"列表,在"業務流程"列表中,雙擊目標業務流程,開啟目標業務流程的編輯頁面。在業務流程編輯頁面的左側選單欄中雙擊"ODPS MR"項,會出現"新建節點"彈出框。在"新建節點"彈出框中,自主填寫"節點名稱",然後點選"提交"按鈕,完成ODPS MR節點的建立。

      新建ODPS MR節點

    2. 完成ODPS MR節點的建立後,在業務流程的編輯頁面中,雙擊剛建立的ODPS MR節點,進入ODPS MR節點的編輯頁面。

      雙擊ODPS MR節點

    3. 在ODPS MR節點的編輯頁面中,編輯區域的末尾新增一行程式碼:--@resource_reference{""}。並將游標放到兩個雙引號之間,下一步準備引入剛新增的資源。

      MR節點引用資原始碼

    4. 在ODPS MR節點編輯頁面左邊的"資料開發"頁面中,展開當前業務流程的列表,在列表中依次展開"MaxCompute"、"資源"項,選中剛新增的JAR包資源,滑鼠右擊調出右鍵選單。在右鍵選單中點選"引用資源",剛才ODPS MR節點編輯區域的游標所在位置就會自動新增引用資源的名稱,並在編輯區域的開頭自動生成一行程式碼,下一步準備新增一行呼叫JAR包資源執行的程式碼。

      MR節點引入資源

    5. 在編輯區域末尾,再新增一行呼叫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節點的程式碼編輯後,下一步準備進行其排程配置。

      MR節點編輯執行命令

    6. 在排程配置邊欄中,對該ODPS MR節點的排程配置進行完善。在"基礎屬性"模組中,"責任人"選擇當前登入的RAM賬號;自主填寫"描述";"引數"的填寫內容上一步中已完成,不再贅述。在"時間屬性"模組中,自主選擇"生成例項方式",為方便後面快速測試,此次實踐選擇"釋出後即時生成";"時間屬性"選擇"正常排程";自主選擇"重跑屬性",通常選擇"執行成功後不可重跑,執行失敗後可以重跑";勾選"出錯自動重跑",自主選擇"出錯自動重跑次數"、"出錯自動重跑間隔",此次實踐使用其預設配置的次數與間隔;自主選擇"生效日期",此次實踐使用其預設配置,讓同步任務一直保持生效狀態;由於此次實踐希望整個業務流程的執行週期間隔儘量短一些,所以設定"排程週期"為"分鐘","開始時間"設定為"00:00"(被限制只能設定整時),"時間間隔"設定為最短的"05","結束時間"設定為"23:59"(被限制只能設定小時),以確保該節點跨天也會每五分鐘執行一次;自主選擇"超時時間",此次實踐選擇"系統預設";不勾選"依賴上一週期",這樣某一週期執行出錯不會影響之後的執行週期。"資源屬性"模組的"排程資源組"選擇預設的"公共排程資源組"即可。"排程依賴"模組暫時不進行配置。"節點上下文"模組在此次實踐中不需要配置。完成以上排程配置後,點選頁面上方選單欄的儲存按鈕,完成對ODPS MR節點的建立與配置。

      MR節點排程配置


十二、關聯各個節點

  • 官方文件:配置節點的排程和依賴屬性

  • 步驟圖示:

    1. 目前業務流程裡總共建立並配置了三個節點:一個從MongoDB表到MaxCompute表的離線同步節點,用於獲取日誌資料,每次同步執行時間往前五分鐘到執行時間的資料;一個從MaxCompute表到MaxCompute表的ODPS MR節點,用於解析日誌資料,每次同步執行時間往前十分鐘到執行時間往前五分鐘的資料;一個從MaxCompute表到MongoDB表的離線同步節點,用於輸出日誌資料,每次同步執行時間往前十五分鐘到執行時間往前十分鐘的資料。本次實踐中,這三個節點在業務流程中並行執行,互相之間不存在上下游關係,因此將這三個節點的父節點均設定為工作空間根節點即可。下面進行步驟演示,對三個節點執行同樣的操作即可。首先選中一個節點雙擊,進入節點編輯頁面。

      雙擊進入節點

    2. 在節點編輯頁面右端展開"排程配置"邊欄,然後在排程配置邊欄的"排程依賴"模組下的引數項"依賴的上游節點"後面點選"使用工作空間根節點"按鈕,下面的父節點列表中會自動新增一條工作空間根節點資料。然後點選頁面上方選單欄的提交按鈕,會出現"請注意"彈出框。

      節點繫結工作空間根節點

    3. 在"請注意"彈出框中,點選"確認"儲存修改。儲存成功後,會出現"提交新版本"彈出框。

      節點提交確認儲存

    4. 在"提交新版本"彈出框中,自主填寫"變更描述",然後點選"確認",完成節點的提交。節點提交後,該節點就會正式執行,開始進行週期排程。至此完成將三個節點繫結到工作空間根節點下的操作,並將三個節點成功進行了提交。

      節點提交新版本


十三、提交業務流程並檢視執行結果

  • 官方文件:節點執行及排錯

  • 步驟圖示:

    1. 上一步中,業務流程中的三個節點已經成功進行了提交併開始執行,而在業務流程編輯頁面中,點選上方選單欄的提交按鈕,也可以對節點進行統一提交。

      業務流程提交

    2. 業務流程提交併執行後,我們可以點選頁面上方選單欄中的前往運維按鈕,或者頁面右上角的"運維中心"連結,開啟DataWorks的"運維中心(工作流)"頁面,準備檢視各個節點週期任務的執行結果。

      前往運維中心

    3. 在"運維中心(工作流)"頁面左側選單欄中展開"週期任務運維"項,在子選單中點選"週期例項",切換到週期例項列表頁面。在週期例項列表頁面上方搜尋欄中,搜尋條件的"業務日期"(業務日期為實際執行日期的前一天)選擇"全部",勾選"我的出錯節點",自主調整其他搜尋選項,點選搜尋欄右下角的"重新整理"可以更新搜尋結果。在下方週期例項列表中點選一個出錯例項,列表右側會出現該出錯例項的詳情頁面。在詳情頁面中,點選目標出錯節點,頁面右下角會出現該節點資訊的彈出框。在彈出框中點選檢視日誌,可以開啟該出錯節點執行時的日誌詳情頁面。根據異常日誌內容,我們就可以找到出錯原因,進行對應的調整,確保整個業務流程的正常執行。

      檢視出錯節點


結語

  • 本次實踐中,雖然購買使用了獨享資料整合資源組,實際上使用公共資料整合資源組也可實現本實踐的功能需求。若沒有購買獨享資料整合資源組,能將整個業務流程的成本降到最低,只需支付MaxCompute服務的流量費用。
  • 本次實踐僅使用了阿里雲的離線同步、離線計算功能,如果要使用實時同步、實時計算功能,通常需要購買開通相應的服務。
  • 使用RAM賬號操作過程中,經常會出現許可權不足的情況,這時候使用另一種瀏覽器登入主賬戶,即可較為方便地在一臺電腦上進行授權或購買阿里雲服務,避免在一個瀏覽器上來回登入。
  • 在實踐過程中經常會出現陌生的術語,或者找不到某一個需求對應的模組在哪裡,或者操作過程中遇到了錯誤進行不下去,可以多在阿里雲關鍵字搜尋頁面中思考關鍵字查詢對應的文件,實在解決不了,就提交工單諮詢阿里雲的技術人員即可。

相關文章