開發與維運

阿里巴巴飛天大數據平臺智能開發雲平臺DataWorks最新特性

自2009年DataWorks立項,伴隨著阿里巴巴集團登月計劃、公共雲和專有云的發佈,直到2018年V2.0的發佈,DataWorks已經走過了十年的歷程。本文主要分享了DataWorks商業化增值版本中高級功能,分別介紹了DataWorks基礎版,標準版,專業版和企業版中具備的特色功能和每個功能點所適應的場景,幫助用戶選擇適合的DataWorks版本,更好的解決所面臨的問題。

一、DataWorks背景介紹

1.DataWorks的發展歷史
自2009年DataWorks立項,伴隨著阿里巴巴集團登月計劃、公共雲和專有云的發佈,直到2018年V2.0的發佈,DataWorks已經走過了十年的歷程。整個過程經歷了幾個關鍵的節點,2009年到2013年期間,DataWorks具備調度Hadoop集群任務的能力。在此之後,由於數據量不斷的增加,Hadoop集群已無法支撐阿里巴巴集團海量增長的數據,阿里開始自研MaxCompute+DataWorks。2013年之後,DataWorks開始支持Maxcompute任務的調度。自此,阿里巴巴集團基於Maxcompute+DataWorks,構建了整個阿里的數據中臺。
image.png

  1. DataWorks-一站式大數據研發+治理平臺
    作為阿里巴巴的一站式大數據的研發平臺,DataWorks具備的基礎能力可以分為兩大部分,數據研發和數據治理。在2018年上半年之前,大部分用戶使用DataWorks產品的目的是做數據研發工作,基於DataWorks的數據研發工作通常是將數據源通過數據集成傳到Maxcompute,再通過離線計算Data Studio任務進行定時調度。從2018年下半年開始,發佈的DataWorks V2.0將集團內部數據治理功能無縫部署到了公共雲,使每位公共雲用戶都能夠在DataWorks 基礎版中具備較為完善的數據治理能力,包括數據血緣、數據質量監控、任務監控、數據審計,以及安全數據權限管控的功能。

image.png

為了讓用戶體驗到更好的商業級服務,DataWorks在2019年6月份實行了商業化。DataWorks收費文檔中展示了整個收費模型,該模型將DataWorks劃分為兩種類型的商品,分別是:資源服務類商品和功能特性類商品。功能特性類商品提供給用戶的是DataWorks各模塊的功能點,如:用戶打開DataWorks界面便能看到數據開發-節點類型、運維中心-智能監控等功能,這些界面都是基於DataWorks的某個版本來呈現給用戶的,如:DataWorks基礎版/標準版/專業版/企業版等。如果在此版本之上,如用戶使用到其中的某些特定功能點,則會按照按量付費的方式進行扣費。、
(注意:任何用戶都必須開通DataWorks按量付費商品,開通後即可永久贈送DataWorks基礎版。)
image.png

二、DataWorks高級功能場景化介紹

  1. DataWorks基礎版
    DataWorks基礎版具備較為實用的特性,可以幫助用戶快速構建數據倉庫。DataWorks基礎版可以覆蓋大數據研發的全生命週期,包括數據接入、數據開發、調動生產、可視化運維、數據質量監控,表權限管理,數據服務API構建,到數據最終呈現到某個應用的開發等全部模塊。值得一提的是,在數據接入部分DataWorks新增了“批量上雲”功能,如用戶的數據存在多個MySQL數據庫,每個數據庫包含多個DB,每個DB都有n多張表。此時用戶可以通過批量上雲功能,上傳EXCEL形式的數據,快速建立起多個數據同步任務進行數據的快速上雲。目前批量上雲方式支持ORACLE,MySQL以及SQL server。基礎版目前也有數據質量監控功能,用戶可以設置自定義的規則進行檢查。

image.png

  1. DataWorks標準版
    針對基礎版,DataWorks標準版在研發方面增加了較多複雜且專業化的節點類型,同時對實時Flink引擎也有了更好的可視化支持。DataWorks標準版更多的是面向大數據體系發展比較快的企業,企業在數據體系發展比較快時,數據質量問題、安全問題通常會逐步暴露,出現相關質量、安全隱患,因此在數據治理方面,DataWorks標準版提供了相應的能力幫助用戶解決問題。

如下是DataWorks標準版場景化案例:
場景一、分支節點實現特定時間執行任務
比如,用戶會提出訴求,既能否根據某個特殊的判斷決定任務工作流的下游是否要跑某個任務。如下圖,用戶要判斷今天是不是每個月最後一日。由於每個月的最後一天並不是固定的30號。
image.png

此時,如果通過DataWorks傳統的簡單場景的線性依賴,很難實現用戶訴求。DataWorks標準版提供了幾種負載類型的節點,包括循環、遍歷、賦值、分支和歸併節點,讓用戶自由組合節點,以便實現更復雜的場景。

上述場景如何通過複雜節點實現?如下圖所示,案例中需要使用兩種節點,賦值節點和分支節點。賦值節點中用戶可以通過Python判斷今天是不是這個月的最後一天,如果是,賦值節點負責將“1”作為一個傳參傳給下游,如果不是則傳“0”。分支節點接收到上游傳參“1”,則執行左邊分支,如果接收到“0”,執行右邊的分支。
image.png

場景二、SQL代碼複用
隨著用戶SQL代碼規模越來越大,某些代碼段會成為一個公用的代碼段。用戶需要將這些代碼做成公用代碼供其他人複用。傳統方法是複製代碼,而傳統的的做法存在較高的風險。複製代碼一方面效率較低,另外很容易對代碼進行剪切,原代碼會被改動。
image.png

DataWorks標準版提供了SQL組件功能,允許用戶定義一個公用的SQL代碼塊,並且在其中設置自己需要的變量。其他人需要這個SQL代碼塊,就將其作為一個節點投入到一個業務流程,同時對設置的參數進行賦值,實現SQL代碼的複用。
image.png

場景三.實時場景
某些企業需要構建實時的數據倉庫,而實際上,往往需要技術非常嫻熟的一批團隊才能夠搭建起整個流計算的系統。Flink的整個流程包括,用戶在本地進行流任務的開發調參,開發結束後上傳到Flink集群,再通過命令行運行。同時,運維過程也非常麻煩,如果出現超時或其它問題,Flink需要在多個地方檢查日誌,排查難度非常高。
image.png

DataWorks標準版提供了DAG開發以及SQL/DAG互轉功能。用戶可以對每個處理的數據和處理動作都拖入一個節點,將節點串聯成一個工作流,依次對數據進行處理。如下圖,點開每個節點的結構,如第一個datahub是個數據源,輸入時會有一個字段,到第二個固定鏈被切分,切分為多個字段。用戶可以通過可視化的方式在線進行配置字段。在配置完整個流程之後,點擊右上角切換SQL模式,將其轉化為Flink SQL。DataWorks標準版除了支持圖形化的方式配置Flink流計算的處理流程,也支持用戶使用原生的SQL進行任務的編寫。
image.png

另外,DataWorks專業版中具備本地調試功能,在每個節點用戶可以點擊採樣看到採樣的時間點採樣數據。如果不符合預期,用戶可以及時做出調整。傳統Flink不具備此功能,只能等到所有任務都執行結束,才可以查看結果數據是否符合預期。用戶在還沒有將整個任務上線時,本地調試功能便能夠檢查數據的生產是否符合預期。在快速構建實時流計算體系時,DataWorks大大降低了用戶使用實時流計算引擎的門檻。

場景四、任務監控場景
隨著用戶的工作量越來越龐大和越來越複雜,人肉維護每個任務監控變得非常痛苦。下圖中展示的密密麻麻的節點,是阿里集團內在運營中心展開的DAG截圖。傳統監控配置手段對每個任務之間配置的超時進行報錯,但當工作流的體量非常大時,傳統的配置手段不是很現實。由於每個任務的數據體量不固定,導致任務時間增長,用戶無法對每個任務的報警閾值做調整。這時需要一個既快捷又智能的方式,用戶只需配置一次,在此之後合理監控,對整個工作流實現整體監控的功能。
image.png

DataWorks標準版的智能監控功能,允許用戶僅對產出數據的最後一個節點配置一個極限時間,之後DataWorks智能監控系統在後端針對往常的每個任務的運行時間以及SQL語義進行分析,規劃出關鍵路徑,分析每一個節點的最晚開始和結束時間。一旦上游的某一箇中間任務出現變慢或者出錯的情況,智能監控系統中報警的機制會通過郵件、短信或者釘釘推送給用戶。用戶在接收到中間任務出現的事件時就可以快速響應,快速處理任務所出現的問題。如果問題能夠得到及時解決,最終產出的任務就能夠保證在用戶定好的時間點產出。既對整個工作流設置基線,只要保證基線不破線,則智能監控功能可以保證數據準時產出。
image.png

場景五、尋找髒數據的源頭
隨著用戶的數據量飛速增長,數據質量問題也會凸顯。DataWorks標準版提供了讓用戶自己配置,自定義規則或者預設模板來監控數據質量的功能。如下圖,一張用戶消費表,以往每天用戶花費是100多萬,忽然有一天統計到的數據是2000,出現了不符合預期的情況。
image.png

DataWorks標準版中數據血緣功能能夠幫用戶很好的解決數據質量的問題。數據血緣功能可以為用戶提供數據地圖,能夠識別每一張表的上游表和下游表,每一個字段的上游字段和下游字段,既以字段的形式呈現數據的歷史。數據地圖也有其它的用處,用戶只要在一個阿里雲主賬號下面的同一個region,所有被加到當前項目的用戶都可以在數據地圖中搜索表,也可以在每張表的詳細信息中看得到當天這張表的產出信息。數據地圖對於日常表的使用也是必不可少的一個功能,可以查看字段說明、每日分區產出等信息。
image.png

場景六、數據審計
在保證數據準時產出、產出準確之後,如何保證數據不丟失?為此企業管理者通常會推動企業構建數據審計體系。DataWorks數據保護傘模塊幫助用戶對數據敏感級別進行分級和分類,以可視化(圖形化)方式展示敏感數據,並且審計內部人員對敏感數據的訪問行為,同時保證敏感數據可用不可見(既數據脫敏)。DataWorks標準版提供了以上四個功能,幫助用戶落地最基本的數據審計的能力。
image.png

首先,DataWorks標準版提供了一個能夠讓用戶自己定義字段、進行字段掃描的能力,對字段的敏感級別進行分類。如下圖。用戶可以在頁面中創建幾個分級,包括公開、內部、敏感和機密。然後設定數據類型,只要掃描到表中有payment字段,就將其定位為金額字段。設定的規則自第二天便開始生效,從零點開始進行掃描,掃描結束後展示整個項目中關於金額類的字段。
image.png

敏感數據訪問行為審計功能將訪問的行為記錄下來,幫助管理者發現訪問敏感字段的用戶的行為,必要時管理者與相關人員進行一定的溝通,建立內部溝通的機制。數據脫敏目前有三種脫敏方式,包括HASH,假名和掩蓋脫敏。
image.png

DataWorks標準版目前已經覆蓋了大部分數據研發和基本的數據治理的功能。對於數據業務發展非常快,並且對數據治理有一定要求的企業,在初期可以選擇DataWorks標準版來滿足自己的訴求。

  1. DataWorks專業版
    DataWorks專業版提供可拓展數據服務的API,能夠提供更靈活、更高可用的服務能力。同時在數據治理方面,DataWorks專業版的安全能力也有了一定的加強。

場景一、API對接報表系統
第一個場景,企業有不同數據結構的報表系統,需要以可視化方式展示數據。如一家銀行需要對公司年度放貸的同比增長近做柱狀圖統計,此時銀行正好有一套可視化的系統,其中有一個柱狀圖的組件,組件要求返回接收JSON格式的對象包數組數據結構即可正常顯示。這時可以使用數據服務中的過濾器和函數功能對API返回的數據進行二次加工,靈活的應對各種的數據結構的要求。用戶在MaxCompute中存了一張某企業的貸款信息表。傳統的方式是構建好一個API,API中傳入最右邊的字段日期便可以返回其它幾個字段。共計每條數據要返回七個字段,其中x顯示公司信息,y顯示貸款金額。下圖右邊將firm_name,firm_account,up_over_last_year三個字段組合起來放到x中,再將loan_amount字段結果放到y中。此時API已經構建好,但如果按照傳統格式構建API並不划算。通過數據服務的過濾器和函數功能,用戶使用Python3直接編寫一個函數對數據和返回格式進行處理,將三個字段拼到一起,最終促成一個可視化的模板所要求的數據結構展示數據。
image.png

場景二、實時故障排查
在傳統Flink場景下,運維工作難度較高,尤其是排查問題。如排查超時問題,常規的排查鏈路需要檢查Checkpoint中某個算子是否出現了問題,若沒有問題,再去查看JobManager的延時信息,再檢查是否TaskManager對機器有負載過高,是否存在網絡問題,異或存在數據傾斜問題。排查工作依賴於排查員個人經驗,排查員個人經驗和對Flink技術架構的理解決定了排查問題的準確性。
image.png

如下圖所示,DataWorks的智能運維功能對數據源、數據產出、延遲、髒數據、Watermark、Checkpoint、failover提供了可視化檢查,發現任何的錯誤都可以及時拋給用戶,幫助用戶定位錯誤。

image.png

場景三、非通用脫敏數據審計
DataWorks專業版在數據安全方面有了本質的提升。企業中不常見的敏感數據,需要納入敏感數據的行列進行審計。這時需要有個功能是能夠讓用戶通過選擇某一類敏感數據的類型匹配字段,自定義的掃描字段。如下圖,Bankcard id是銀行卡號字段,通過DataWorks標準版功能就能夠識別到此字段,並列為敏感字段。但下表中Product description 字段是用戶購買的商品,其中某些記錄值是敏感的,某些則不是,這時無需將整個字段都列為敏感信息。DataWorks專業版通過自定義內容掃描的方式來正則匹配,用戶也可以選擇自定義,點擊內容掃描,只要是滿足標準的正則的規則都可以進行匹配。這滿足了在特定場景下敏感數據識別的訴求。

image.png

場景四、審計敏感數據訪問行為
管理者不僅要審計每個人員對敏感數據的訪問行為,還需要審查具備某個表權限的人員的風險行為,檢查是否在非預期的時間使用了敏感數據。DataWorks專業版可以幫管理者識別高危訪問行為,在頁面上呈現出訪問的SQL,訪問時間和訪問的敏感數據。若不符合預期,管理員需要其進行內部審核。
image.png

4.DataWorks企業版
DataWorks企業版增加了數據服務API編排能力。數據中臺解決的問題是“存”、“通”、“用”問題。既需要將數據規範進行集中存儲,使各系統間的數據統一流通,進行統一規劃加工,同時將最終數據供業務方使用。而使用數據的業務方需求各式各樣、千奇百怪,如數據中臺可以快速慢速業務方訴求,則該數據體系在企業內就會贏得更多信任,具有越來越重要的企業戰略地位;如不能及時滿足用戶的需求或不符合預期,則數據體系會越來越被邊緣化。如何滿足業務方紛繁複雜,各種各樣的需求?DataWorks企業版數據服務目前提供了服務編排的能力,可以滿足各種比較複雜的場景。
場景一、應對臨時需求
某些臨時性需求,如:審計人員會隨機不定時地抽取各個數據源進行對比;或者風控系統要從多張表中取得相互依賴的數據,最終取得最下游的數據進行決策,都是較為複雜的業務訴求。
如下圖所示,審計人員要將幾張表join之後進行對比,或從多張表獲得相互依賴的數據,找出最下游的數據進行決策。每一個表select的結果,都是下一張表where後面的條件。從數據開發角度較為常規的方法是將數據拉到數據倉庫中,對錶進行join後產出,最終得到結果進行對比。但這非常費時費力,同時會耗費計算存儲資源,並且任務的維護性價比不是很高。
image.png

DataWorks企業版提供的數據服務編排能力允許用戶構建多個API,將API構建成複雜邏輯的複合服務的功能。用戶只需傳入一個參數,下游API便可以根據每個上游API的產出作為輸入,最終產出結果。如下圖示例,在數據庫裡面創建一個編排的流程,拖入四個API,每個API都會抽一張表的一個字段,抽到的結果傳入下一個API作為入參。API接到入參進行一系列的計算之後,將結果作為出參傳給下游作為入參。經過一系列流程,就可以實現整個邏輯,用戶不需要將所有數據都導到數據倉庫裡進行統一加工。數據服務支持多種數據源,包括MySQL,Oracle或者其它引擎。

image.png

在數據服務裡也可以構建如下圖所示的工作流。下圖左邊是join的API,API將兩張表join後返回兩個字段,最終形成字段表。最後拖入Python對兩個API返回的結果進行對比,對比出來輸出結果。如此便滿足風控系統的審計人員不定時抽取多張表複查數據對比的訴求。
image.png

場景二、安全能力升級
DataWorks企業版在數據治理方面有了安全能力的升級,提供了場景PII敏感數據的識別模型。用戶只需設置一個字段類型,DataWorks企業版就可以幫用戶去識別某些敏感字段。DataWorks企業版中已經預設了部分敏感字段的算法,包括郵箱、座機、IP等。DataWorks企業版有一個特點,既進行安全知識的輸出,如用戶打開這個功能開關,便可以實現對同一天多次使用高相似度的SQL進行查詢,幫助用戶一鍵使用。DataWorks企業版目前提供個性化需求,用戶可自建樣本庫,定義敏感數據,在內容掃描模塊中維護的自建樣本庫。
image.png

場景三、定製化開發
部分用戶的訴求是對DataWorks界面進行企業的定製化開發,DataWorks企業版通過APPStudio模塊中高級API,進行界面的二次開發。目前,DataWorks企業版為用戶提供了MaxCompute數據表類API,用戶可以通過DataWorks企業版中的AppStudio模塊來進行調用,並構建如下圖所示的數據資產頁面。

image.png

三、購買建議

DataWorks基礎版:一般適用於構建數據倉庫的需求非常緊迫,並且人員有缺口的情況。因為DataWorks基礎版提供了可視化數據批量上雲的能力,同時數據開發頁面也支持可視化,包括SQL編寫,工作流構建,依賴關係構建和任務運維。
DataWorks標準版:適用於數據體系發展比較快的企業。當企業數據量增加,任務的體量成規模的增加,安全治理的問題凸顯。DataWorks標準版能夠滿足用戶基本的數據治理的能力以及一些高級的數據開發能力。
DataWorks專業版:適用於需要構建相對成熟的數據服務體系的去企業。如果安全要求較高,DataWorks專業版提供的風險識別能力是非常必要的。
DataWorks企業版:當用戶認為當前的數據體系提供服務的時候不是特別靈活,可以嘗試使用DataWorks企業版數據編排服務,以滿足整個數據中臺對於業務方的各種各樣的訴求。DataWorks企業版也會賦予用戶越來越多數據安全和數據審計方面的能力。同時二次定製的數據開發的能力也會越來越完善。

Leave a Reply

Your email address will not be published. Required fields are marked *