什麼是DataWorks:html
學習路徑:java
實踐案例目標:將MongoDB數據庫中的目標日誌集合同步至阿里雲DataWorks中,在DataWorks中進行日誌解析處理後,將處理後的新數據同步到MongoDB數據庫的新集合中,整個業務流程的執行間隔儘可能縮短。數據庫
實踐案例步驟:編程
官方文檔:準備阿里雲帳號瀏覽器
步驟圖示:安全
官網首頁點擊右上角"當即註冊"。網絡
選擇註冊方式進行註冊。intellij-idea
註冊完成後,官網首頁右上角可登陸帳號。app
登陸成功後,點擊右上角"個人阿里雲"圖標,會出現帳戶信息邊欄。運維
在邊欄中點擊"帳號管理",進入帳號管理頁面。
在帳號管理頁面完成實名認證。
完成實名認證後,鼠標箭頭懸停在頁面右上角的頭像上,在出現的懸浮框中點擊"AccessKey管理",進入AccessKey管理頁面。
目前阿里雲官方建議禁用主帳號的AccessKey,使用RAM子用戶AccessKey來進行API調用,所以點擊"開始使用子用戶AccesssKey",進入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表
步驟圖示:
在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包,用於對日誌數據進行解析。
官方文檔:安裝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插件的下載與配置。
官方文檔:開發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類的開發,實現所需的功能(例如本次實踐中進行了日誌解析功能的實現),這裏不深刻展開詳細的過程。開發結束前,請自主進行本地測試,使程序經過本地編譯和測試,確保功能可用。
官方文檔:打包、上傳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節點
步驟圖示:
在阿里雲的"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的"運維中心(工做流)"頁面,準備查看各個節點週期任務的運行結果。
在"運維中心(工做流)"頁面左側菜單欄中展開"週期任務運維"項,在子菜單中點擊"週期實例",切換到週期實例列表頁面。在週期實例列表頁面上方搜索欄中,搜索條件的"業務日期"(業務日期爲實際運行日期的前一天)選擇"所有",勾選"個人出錯節點",自主調整其餘搜索選項,點擊搜索欄右下角的"刷新"能夠更新搜索結果。在下方週期實例列表中點選一個出錯實例,列表右側會出現該出錯實例的詳情頁面。在詳情頁面中,點選目標出錯節點,頁面右下角會出現該節點信息的彈出框。在彈出框中點擊查看日誌,能夠打開該出錯節點運行時的日誌詳情頁面。根據異常日誌內容,咱們就能夠找到出錯緣由,進行對應的調整,確保整個業務流程的正常運行。