阿里雲大資料ACP認證知識點梳理9——產品特點(DATA WORKS)
DataWorks(資料工場,原大資料開發套件)是阿里雲數加重要的PaaS平臺產品,它提供全面託管的工作流服務,一站式開發管理的介面,幫助企業專注於資料價值的挖掘和探索。
DataWorks(資料工場)基於MaxCompute作為核心的計算、儲存引擎,提供了海量資料的離線加工分析、資料探勘的能力.
使用DataWorks(資料工場),可對資料進行資料傳輸、資料轉換等相關操作,從不同的資料儲存引入資料,對資料進行轉化處理,最後將資料提取到其他資料系統。
提供強大的排程能力,支援按照時間、依賴關係的任務觸發機制,支援每日千萬級別的任務按照DAG關係準確、準時執行。支援分鐘、小時、天、周和月多種排程週期配置。(分鐘的最小單位是5分鐘)
完全託管的服務,無需關心排程伺服器資源問題。租戶之間提供隔離,保證不同租戶之間的任務不會相互影響。
支援資料同步、SHELL、MaxCompute SQL、MaxCompute MR等多種任務型別,通過任務之間的相互依賴完成複雜的資料分析處理。
目前無法支援SQL執行在阿里云云資料庫、阿里雲分析型資料庫等產品,僅支援MaxCompute。
任務(Task)
任務是指定義對資料執行的操作。使用資料同步節點任務將資料從RDS複製到MaxCompute。使用MaxCompute SQL節點任務執行MaxCompute SQL來進行資料的轉換。使用工作流任務,通過內部幾個不同的SQL內部節點完成一系列的資料轉換。每個任務使用0或0個以上的資料表(資料集)作為輸入,生成一個或多個數據表(資料集)作為輸出。
任務主要分為三種:節點任務(node task),工作流任務(flow task)和內部節點(inner node)。
節點任務(node task):一個數據執行的操作。可以與其他節點任務、工作流任務配置依賴關係,組成DAG圖。
工作流任務(flow task):解決一個小業務的一組內部節點組成一個工作流任務。工作流任務數量建議小於10個。工作流任務內部節點,無法被其他工作流任務、節點任務依賴,工作流任務可以與其他工作流任務、節點任務配置依賴關係,組成DAG圖。
內部節點(inner node):工作流任務內部的節點,與節點任務能力基本相同。其排程週期會繼承工作流任務的排程週期,無法進行單獨配置,依賴關係也按照拖拽關係。
例項(Instance)
在排程系統中的任務經過排程系統、手動觸發執行後會生成一個例項,例項代表了某個任務在某時某刻執行的一個快照,例項中會有任務的執行時間、執行狀態、執行日誌等資訊。
提交(Submit)
提交是指開發的節點任務、工作流任務從開發DataWorks環境釋出到排程系統的過程。完成提交以後,相應的程式碼、排程配置全部合併到排程系統中,排程系統按照相關配置進行排程操作。
未提交的節點任務、工作流任務不會進入到排程系統。
指令碼開發(Script)
指令碼開發是提供給資料分析使用的一個程式碼儲存空間,指令碼開發的程式碼無法釋出到排程系統,無法進行排程引數配置,僅可以進行一些資料查詢分析的工作。
在DataWorks(資料工場,原大資料開發套件)中,可以通過介面管理資源、函式。如果通過MaxCompute的其他方式進行資源、函式管理,則無法在DataWorks中進行相關的查詢。
資料開發流程:
資料開發的總體流程包括資料產生、資料收集與儲存、資料分析與處理、資料提取和資料展現與分享,如下圖所示:
資料產生
業務系統每天會產生大量結構化的資料,這些資料都儲存在業務系統所對應的資料庫中,包括MySQL、Oracle、RDS等型別。
資料收集與儲存
若想利用MaxCompute的海量資料儲存與處理能力來分析這些已有的資料,首先需要將不同業務系統的資料同步至MaxCompute中。
DataWorks提供資料整合服務,可支援多種資料來源型別將業務系統資料按照預設的排程週期同步到MaxCompute。
資料分析與處理
隨之可對MaxCompute上的資料進行加工(MaxCompute SQL、MaxCompute MR)、分析與挖掘(資料分析、資料探勘)等處理,從而發現其價值。
資料提取
分析與處理後的結果資料,需同步匯出至業務系統,以供業務人員使用其分析的價值。
資料展現和分享
最後可通過報表、地理資訊系統等多種展現方式來展示與分享大資料分析、處理後的成果。
排程引數:
目前系統引數有兩個,這兩個系統引數只要程式碼裡用到,不需要做額外的賦值動作,節點自動排程的時候就會自動替換。系統引數分別為:
${bdp.system.bizdate}格式 yyyymmdd,日常排程例項定時時間的前一天(年月日)。節點每天自動排程例項定時時間年月日減 1 天。
${bdp.system.cyctime}格式 yyyymmddhh24miss,日常排程例項定時時間(年月日時分秒)。 yyyy 表示 4 位數年份,mm 表示 2 位數月份,dd 表示 2 位數天,hh24 表示 24 小時制的時,mi 表示 2 位數分鐘,ss 表示 2 位數秒。
使用方式:節點程式碼裡編輯如 pt=${bdp.system.bizdate},然後節點在排程上執行即可自動替換值。
若節點每天排程時程式碼裡有變數需要賦當天減 2 的日期,即業務日期減 1 天,格式為 yyyymmdd,需要系統引數和 MaxCompute 內建函式一起使用,如下:
節點程式碼
dt=to_char(dateadd(TO_DATE('${bdp.system.bizdate}', 'yyyymmdd'), -1, 'dd'), 'yyyymmdd')
目前支援.csv/.txt 檔案上傳,一次性上傳檔案大小上限為 10M。
一個工作流裡沒有業務關係的節點可以不用彼此依賴。
工作流節點的依賴:
一個工作流裡只能有一個根節點,即沒有父節點的節點。
一個工作流裡某個節點可以依賴多個節點,也可以被多個節點依賴。
一個工作流裡可以有多個節點沒有被其他節點依賴。
角色許可權的說明:
專案管理員:指專案空間的管理者,可對該專案空間的基本屬性、資料來源、當前專案空間計算引擎配置和專案成員等進行管理,併為專案成員賦予專案管理員、開發、運維、部署、訪客角色。
開發:開發角色的使用者能夠建立工作流、指令碼檔案、資源和 UDF,新建/刪除表,同時可以建立釋出包,但不能執行釋出操作。
運維:運維角色的使用者由專案管理員分配運維許可權;擁有釋出及線上運維的操作許可權,沒有資料開發的操作許可權。
部署:部署角色與運維角色相似,但是它沒有線上運維的操作許可權。
訪客:訪客角色的使用者只具備檢視許可權,沒有許可權進行編輯工作流和程式碼等操作。
安全管理員:安全管理員僅在資料保護傘中用到,用於敏感規則配置,資料風險審計等。
週期配置
一個週期執行的任務,它的依賴關係的優先順序大於時間屬性。在時間屬性決定的某個時間點到達時,任務例項不會馬上執行,而是先檢查上游是否全部執行成功。
上游依賴的例項沒有全部執行成功並且定時執行時間已到,則例項仍為 未執行狀態。
**上游依賴的例項全部執行成功並且定時執行時間還未到,則例項進入 等待時間 狀態。
**
上游依賴的例項全部執行成功並且定時執行時間已到,則例項進入等待資源狀態準備執行。
當一個任務被成功提交後,底層的排程系統從第二天開始,將會每天按照該任務的時間屬性生成例項,並根據上游依賴的例項執行結果和時間點執行。23:30 之後提交成功的任務從第三天開始才會生成例項。
若有一個任務需要每週一執行一次,那麼只有執行時間是週一的情況下,該任務才會真正執行,執行時間非週一的情況下,該任務會空跑(直接將任務置為成功),不會實際執行。所以周排程任務,在測試/補資料的時候,需要選擇業務日期=執行時間-1。
天排程任務,即每天自動執行一次。新建週期任務時,預設的時間週期為 每天 0 點 執行一次,可根據需要自行指定執行時間點,例如指定每天 13 點執行一次。
周排程任務,即每週的特定幾天裡每天在特定時間點自動執行一次。當到了沒有被指定的日期時,為保證下游例項正常執行,系統也會生成例項但直接設定為執行成功,而不會真正執行任何邏輯,也不會佔用資源。
月排程任務,即每月指定的特定幾天裡每天在特定時間點自動執行一次。當到了沒有被指定的日期時,為保證下游例項正常執行,系統也會每天生成例項但直接設定為執行成功,而不會真正執行任何邏輯,也不會佔用資源。
小時排程任務,即每天指定的時間段內按 N*1 小時的時間間隔執行一次,比如每天 1 點到 4 點的時間段內,每 1 小時執行一次。
分鐘排程任務,即每天指定的時間段內按 N* 指定分鐘的時間間隔執行一次,目前能支援的最短時間間隔為每 5 分鐘執行一次。
當一個任務被配置為暫停時,排程系統仍會每天按時間屬性為該任務生成對應的一個或多個例項,但這些例項在定時時間到達時不會真正執行其中的程式碼,而是直接被設定為執行失敗,以保證下游例項不會被觸發執行。被直接設定為執行失敗的例項,實際並沒有執行其中的程式碼,因此沒有日誌資訊產生。
依賴關係
在排程配置中,會需要配置兩個任務級別的依賴:依賴屬性和跨週期依賴。
自動推薦:系統自動掃描節點程式碼解析出來源表和目標表,從而推薦來源表是從哪個任務產出,只有 SQL 型別節點任務和工作流任務有這個功能,同時也只能解析到 SQL 任務產出的表 。
所屬專案:當前組織內所有專案空間,可在下拉列表中進行選擇。
上游任務:對應所屬專案空間中的任務,用來設定當前任務的上游任務,非必填項。支援工作流名稱模糊匹配查詢 。
一個工作流可以依賴多個上游工作流,同樣,一個工作流可被多個工作流依賴。依賴屬性為非必填項,當下遊工作流需依賴上游工作流產出資料,則可配置依賴關係。
配置節點/工作流任務的跨週期依賴,如:天排程任務中,今天需要執行的資料依賴本任務昨天執行的資料,那麼可以配置依賴昨天任務的週期,這樣一來,昨天的例項必須先執行成功,今天的例項才可以排程起來,這種依賴主要是體現在任務排程例項的依賴 。
跨週期依賴說明:
不依賴上一排程週期:所有任務預設選擇該選項,即不依賴任何任務的上週期例項。
自依賴:等待本任務上一排程週期結束,才能繼續執行:應用場景:任務 A 當前週期數據來源依賴於任務 A 上週期執行的結果;或者小時/分鐘排程任務 A 不允許例項並行。
等待下游任務的上一週期結束,才能繼續執行:依賴第一層子任務的上週期。這種應用場景不多,選擇此項,後續該任務一旦被其他任務直接依賴則例項都依賴所有第一層子任務的上週期例項。
等待自定義任務的上一週期結束,才能繼續執行:應用場景:天任務 A 依賴一個數據是天任務 B 昨天產出的。