阿里雲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",點選添加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-6/24/60] yyyy_mm_dd_max=$[yyyy-mm-dd-1/24/60] yyyymmdd_min=$[yyyymmdd-6/24/60] hh_mi_min=$[hh24:mi-6/24/60] hh_mi_max=$[hh24:mi-1/24/60] hh_min=$[hh24-6/24/60] mi_min=$[mi-6/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-6/24/60] p_hh=$[hh24-6/24/60] p_mi=$[mi-6/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-6/24/60] p_hh=$[hh24-6/24/60] p_mi=$[mi-6/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表的離線同步節點,用於輸出日志數據,同樣同步執行時間往前六分鍾到執行時間往前一分鍾的數據。本次實踐中,這三個節點在業務流程中存在上下游關系,下游節點要在上游節點成功執行后再執行,因此要將MongoDB表到MaxCompute的同步節點連線到MR節點上方,然后將MR節點連線到MaxCompute表到MongoDB表的同步節點上方,綁定三者的依賴關系。將鼠標懸停到節點上會出現一個圓點,選中圓點進行拖拽即可進行節點之間的連線操作。綁定好上下游關系后,雙擊最上游節點進入編輯頁面,下一步要將最上游節點綁定到工作空間根節點下。

      雙擊進入節點

    2. 在節點編輯頁面右端展開"調度配置"邊欄,然后在調度配置邊欄的"調度依賴"模塊下的參數項"依賴的上游節點"后面點擊"使用工作空間根節點"按鈕,下面的父節點列表中會自動添加一條工作空間根節點數據。然后點擊頁面上方菜單欄的提交按鈕,會出現"請注意"彈出框。

      節點綁定工作空間根節點

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

      節點提交確認保存

    4. 在"提交新版本"彈出框中,自主填寫"變更描述",然后點擊"確認",完成節點的提交。節點提交后,該節點就會正式運行,開始進行周期調度。至此完成三個節點的關聯,並將第一個節點成功進行了提交。

      節點提交新版本


十三、提交業務流程並查看運行結果

  • 官方文檔:節點運行及排錯

  • 步驟圖示:

    1. 上一步中,業務流程中的第一個節點已經成功進行了提交並開始運行,而在業務流程編輯頁面中,點擊上方菜單欄的提交按鈕,會出現"提交"彈出框,可以對節點進行統一提交。勾選還未提交的兩個節點,自主填寫變更描述,然后點擊"提交"按鈕,即可進行節點的統一提交。

      業務流程提交

    2. 業務流程提交並運行后,我們可以點擊頁面上方菜單欄中的前往運維按鈕,或者頁面右上角的"運維中心"鏈接,打開DataWorks的"運維中心(工作流)"頁面,准備查看各個節點周期任務的運行結果。

      前往運維中心

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

      查看出錯節點


結語

  • 本次實踐中,購買使用了獨享數據集成資源組,而使用公共數據集成資源組也可實現本實踐的功能需求。
  • 使用公共資源組(數據集成資源組、調度資源組)時,會根據使用的流量進行計費(按量計費),而使用公共資源組按量計費不一定比購買獨享資源組便宜。例如,在本次實踐的業務流程正式運行幾天后,查詢阿里雲賬單,發現因為使用公共調度資源組按量計費進行節點的調度,每天該項的費用為六十,而購買最低規格的獨享調度資源組每月不到五百。數據集成資源組也同理,所以最后本次實踐中,數據集成資源組與調度資源組都使用了獨享資源組
  • 各位若使用了公共資源組,請在自己的業務流程正式運行后,查看每天的資源組按量計費的賬單,對比公共資源組與獨享資源組哪種方式成本更低,再選擇使用。
  • 本次實踐僅使用了阿里雲的離線同步、離線計算功能,如果要使用實時同步、實時計算功能,通常需要購買開通相應的服務。
  • 使用RAM賬號操作過程中,經常會出現權限不足的情況,這時候使用另一種瀏覽器登錄主賬戶,即可較為方便地在一台電腦上進行授權或購買阿里雲服務,避免在一個瀏覽器上來回登錄。
  • 在實踐過程中經常會出現陌生的術語,或者找不到某一個需求對應的模塊在哪里,或者操作過程中遇到了錯誤進行不下去,可以多在阿里雲關鍵字搜索頁面中思考關鍵字查詢對應的文檔,實在解決不了,就提交工單咨詢阿里雲的技術人員即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM