阿里雲DataWorks實踐:數據集成+數據開發


簡介

  • 什麼是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使用許可權,之後有別的許可權需求再進行添加。選擇好許可權後,點擊”確定”完成。

      用戶組添加許可權

    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帳號操作過程中,經常會出現許可權不足的情況,這時候用另一種瀏覽器登錄主賬戶,即可較為方便地在一台電腦上進行授權或購買阿里雲服務,避免在一個瀏覽器上來回登錄。
  • 在實踐過程中經常會出現陌生的術語,或者找不到某一個需求對應的模組在哪裡,或者操作過程中出現了錯誤進行不下去,可以多在阿里雲關鍵字搜索頁面中思考關鍵字查詢對應的文檔,實在解決不了,就提交工單諮詢阿里雲的技術人員即可。