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


簡介

  • 什麼是DataWorks:html

  • 學習路徑:java

  • 實踐案例目標:將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、準備阿里雲帳號並登陸

Ⅰ、註冊阿里雲帳號

  • 官方文檔:準備阿里雲帳號瀏覽器

  • 步驟圖示:安全

    1. 官網首頁點擊右上角"當即註冊"。網絡

      阿里雲當即註冊

    2. 選擇註冊方式進行註冊。intellij-idea

      阿里雲註冊方式

    3. 註冊完成後,官網首頁右上角可登陸帳號。app

      阿里雲登陸入口

    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用戶登陸


2、建立並配置工做空間

  • 官方文檔:建立工做空間

  • 步驟圖示:

    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引擎詳情


3、購買獨享數據集成資源組並綁定

  • 注意:因爲本人在其餘業務流程中使用了數據集成中"一鍵實時同步至MaxCompute的功能"(不支持MongoDB數據源),而實時同步功能僅支持運行在獨享數據集成資源組上,所以購買了獨享數據集成資源組。而本次實踐中也就使用了以前購買的獨享數據集成資源組(不用白不用)。而本次實踐因爲只使用了離線同步功能,也可以使用公共資源組(免費)進行數據集成,如要使用公共資源組,可跳過此步驟。

  • 官方文檔:新增和使用獨享數據集成資源組

  • 步驟圖示:

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

      購買獨享資源組入口

    2. 進入DataWorks獨享資源購買頁面,根據本身的需求選擇地域和可用區(要與工做空間所在的地域相同),獨享資源類型選擇"獨享數據集成資源",本次實踐只需購買最低限度的獨享集成資源,所以下面選項依次選擇"4 vCPU 8 GiB"、"1"、"1個月",而後點擊"當即購買",完成獨享數據集成資源的購買。

      購買獨享數據集成資源組

    3. 完成獨享數據集成資源組的購買後,進入DataWorks控制檯頁面,在左側菜單欄切換到"資源組列表"頁面,而後點擊"建立獨享資源組",會出現右側邊欄。資源組類型選擇"獨享數據集成資源組",資源組名稱自主填寫,資源組備註自主填寫,訂單號選擇剛纔購買的獨享數據集成資源的訂單號,而後點擊"肯定",完成獨享數據集成資源組的建立。

      建立獨享數據集成資源組

    4. 建立好獨享數據集成資源組後,在資源組列表頁面中,點擊剛建立完成的資源組右端的"修改歸屬工做空間"連接,會出現修改歸屬工做空間的彈出框,選擇剛纔建立的工做空間,點擊右端對應的"綁定",完成獨享數據集成資源組與工做空間的綁定。

      資源組綁定工做空間


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數據源


5、配置並建立MaxCompute表

  • 官方文檔:建立MaxCompute表

  • 步驟圖示:

    1. 在DataWorks控制檯的工做空間列表頁面中,點擊目標工做空間所在行的"操做"列中的"進入數據開發"連接,打開"DataStudio(數據開發)"頁面。

      進入數據開發

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

      新建MaxCompute表

    3. 在MaxCompute表的編輯頁面,"基本屬性"模塊中,自主填寫"中文名"與"描述"。"物理模型設計"模塊中,"分區類型"選擇"分區表","生命週期"自主勾選(超過生命週期的未更新數據會被清除),"表類型"選擇"內部表"。"表結構設計"模塊中,自主添加字段,分區添加日、時、分三種粒度的分區,其中日級分區的"日期分區格式"能夠填寫日期格式(例如:yyyymmdd)。也能夠使用DDL模式設置表結構。設置完表結構後,點擊"提交到生產環境",完成"輸入表"的建立。同理,自主建立一張相似的"輸出表",用於保存這次實踐中日誌解析完成後產生的數據。至此完成兩張MaxCompute表的建立。

      配置MaxCompute表


6、建立業務流程

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

  • 步驟圖示:

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

      新建業務流程

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

      新建業務流程成功


7、建立並配置離線數據增量同步節點

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

  • 步驟圖示:

    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


8、下載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名稱


9、使用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


10、將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. 在"提交新版本"彈出框中,自主填寫"變動描述",而後點擊"確認",完成資源的提交。資源提交成功後,在業務流程正式運行的時候,節點才能找到此資源。

      確認提交資源


11、建立並配置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節點調度配置


12、關聯各個節點

  • 官方文檔:配置節點的調度和依賴屬性

  • 步驟圖示:

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

      雙擊進入節點

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

      節點綁定工做空間根節點

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

      節點提交確認保存

    4. 在"提交新版本"彈出框中,自主填寫"變動描述",而後點擊"確認",完成節點的提交。節點提交後,該節點就會正式運行,開始進行週期調度。至此完成將三個節點綁定到工做空間根節點下的操做,並將三個節點成功進行了提交。

      節點提交新版本


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

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

  • 步驟圖示:

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

      業務流程提交

    2. 業務流程提交併運行後,咱們能夠點擊頁面上方菜單欄中的前往運維按鈕,或者頁面右上角的"運維中心"連接,打開DataWorks的"運維中心(工做流)"頁面,準備查看各個節點週期任務的運行結果。

      前往運維中心

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

      查看出錯節點


結語

  • 本次實踐中,雖然購買使用了獨享數據集成資源組,實際上使用公共數據集成資源組也可實現本實踐的功能需求。若沒有購買獨享數據集成資源組,能將整個業務流程的成本降到最低,只需支付MaxCompute服務的流量費用。
  • 本次實踐僅使用了阿里雲的離線同步、離線計算功能,若是要使用實時同步、實時計算功能,一般須要購買開通相應的服務。
  • 使用RAM帳號操做過程當中,常常會出現權限不足的狀況,這時候使用另外一種瀏覽器登陸主帳戶,便可較爲方便地在一臺電腦上進行受權或購買阿里雲服務,避免在一個瀏覽器上來回登陸。
  • 在實踐過程當中常常會出現陌生的術語,或者找不到某一個需求對應的模塊在哪裏,或者操做過程當中遇到了錯誤進行不下去,能夠多在阿里雲關鍵字搜索頁面中思考關鍵字查詢對應的文檔,實在解決不了,就提交工單諮詢阿里雲的技術人員便可。
相關文章
相關標籤/搜索