連載:阿里巴巴大數據實踐—數據開發平臺

簡介: 介紹MaxCompute和阿里巴巴內部基於MaxCompute的大數據開發套件,並對在數據開發過程中經常遇到的問題和相關解決方案進行介紹。

前言:
-更多關於數智化轉型、數據中臺內容請加入阿里雲數據中臺交流羣—數智俱樂部 和關注官方微信公總號(文末掃描二維碼或點此加入

-阿里雲數據中臺官網 https://dp.alibaba.com/index

數據只有被整合和計算,才能被用於洞察商業規律,挖掘潛在信息,從而實現大數據價值,達到賦能於商業和創造價值的目的。面對海量的數據和複雜的計算,阿里巴巴的數據計算層包括兩大體系:數據存儲及計算平臺(離線計算平臺MaxCompute和實時計算平臺StreamCompute)、數據整合及管理體系(OneData)

阿里數據研發崗位的工作大致可以概括爲:瞭解需求→模型設計→ETL開發→測試→發佈上線→日常運維→任務下線。與傳統的數據倉庫開發(ETL)相比,阿里數據研發有如下幾個特點:

  • 業務變更頻繁——業務發展非常快,業務需求多且變更頻繁;
  • 需要快速交付——業務驅動,需要快速給出結果;
  • 頻繁發佈上線——迭代週期以天爲單位,每天需要發佈數次;
  • 運維任務多——在集團公共層平均每個開發人員負責上百多個任務;
  • 系統環境複雜——阿里平臺系統多爲自研,且爲了保證業務的發展,平臺系統的迭代速度較快,平臺的穩定性壓力較大。

通過統一的計算平臺(MaxCompute)、統一的開發平臺、統一的數據模型規範和統一的數據研發規範,可以在一定程度上解決數據研發的痛點。

本文主要介紹MaxCompute和阿里巴巴內部基於MaxCompute的大數據開發套件,並對在數據開發過程中經常遇到的問題和相關解決方案進行介紹。

1、統一計算平臺

阿里離線數據倉庫的存儲和計算都是在阿里雲大數據計算服務MaxCompute上完成的。

大數據計算服務MaxCompute是由阿里雲自主研發的海量數據處理平臺,主要服務於海量數據的存儲和計算,提供完善的數據導入方案,以及多種經典的分佈式計算模型,提供海量數據倉庫的解決方案,能夠更快速地解決用戶的海量數據計算問題,有效降低企業成本,並保障數據安全。

MaxCompute採用抽象的作業處理框架,將不同場景的各種計算任務統一在同一個平臺之上,共享安全、存儲、數據管理和資源調度,爲來自不同用戶需求的各種數據處理任務提供統一的編程接口和界面。它提供數據上傳/下載通道、SQL、MapReduce、機器學習算法、圖編程模型和流式計算模型多種計算分析服務,並且提供完善的安全解決方案。

1.MaxCompute的體系架構

MaxCompute由四部分組成,分別是客戶端(MaxCompute Client)、接入層(MaxCompute Front End)、邏輯層(MaxCompute Server)及存儲與計算層(Apsara Core)。
image.png
圖:MaxCompute體系架構圖

2.MaxCompute的特點

(1)計算性能高且更加普惠

2016年11月10日,Sort Benchmark在官方網站公佈了2016年排序競賽CloudSort項目的最終成績。阿里雲以$1.44/TB的成績獲得 Indy(專用目的排序)和Daytona(通用目的排序)兩個子項的世界冠軍,打破了AWS在2014年保持的紀錄$4.51/TB。這意味着阿里雲將世界頂級的計算能力,變成普惠科技的雲產品。CloudSort又被稱爲“雲計算效率之爭”,這項目賽比拼的是完成100TB數據排序誰的花費更少,也是Sort Benchmark的各項比賽當中最具現實意義的項目之一。

(2)集羣規模大且穩定性高

MaxCompute平臺共有幾萬臺機器、存儲近1000PB,支撐着阿里巴巴的很多業務系統,包括數據倉庫、BI分析和決策支持、信用評估和無擔保貸款風險控制、廣告業務、每天幾十億流量的搜索和推薦相關性分析等,系統運行非常穩定。同時,MaxCompute能保證數據的正確性,如對數據的準確性要求非常高的螞蟻金服小額貸款業務,就運行於MaxCompute平臺之上。

(3)功能組件非常強大

MaxCompute SQL:標準SQL的語法,提供各類操作和函數來處理數據。

MaxCompute MapReduce:提供Java MapReduce 編程模型,通過接口編寫MR程序處理MaxCompute中的數據。還提供基於MapReduce的擴展模型MR2,在該模型下,一個Map函數後可以接入連續多個Reduce函數,執行效率比普通的MapReduce模型高。

MaxCompute Graph:面向迭代的圖計算處理框架,典型應用有PageRank、單源最短距離算法、K-均值聚類算法。

Spark:使用Spark接口編程處理存儲在MaxCompute中的數據。

RMaxCompute:使用R處理MaxCompute中的數據。

Volume:MaxCompute以Volume的形式支持文件,管理非二維表數據。

(4)安全性高

MaxCompute提供功能強大的安全服務,爲用戶的數據安全提供保護。MaxCompute採用多租戶數據安全體系,實現用戶認證、項目空間的用戶與授權管理、跨項目空間的資源分享,以及項目空間的數據保護。如支付寶數據,符合銀行監管的安全性要求,支持各種授權鑑權審查和“最小訪問權限”原則,確保數據安全。

2、統一開發平臺

阿里數據開發平臺集成了多個子系統來解決實際生產中的各種痛點。圍繞MaxCompute計算平臺,從任務開發、調試、測試、發佈、監控、報警到運維管理,形成了整套工具和產品,既提高了開發效率,又保證了數據質量,並且在確保數據產出時效的同時,能對數據進行有效管理。

數據研發人員完成需求瞭解和模型設計之後,進入開發環節,開發工作流如圖所示。
image.png
圖:開發工作流圖

對應於開發工作流的產品和工具如下圖所示,我們將對其功能進行簡要介紹。

1.在雲端(D2)

D2是集成任務開發、調試及發佈,生產任務調度及大數據運維,數據權限申請及管理等功能的一站式數據開發平臺,並能承擔數據分析工作臺的功能。

image.png
圖:對應於開發工作流的產品和工具

用戶使用D2進行數據開發的基本流程如下:

——用戶使用IDE進行計算節點的創建,可以是SQL/MR任務,也可以是Shell任務或者數據同步任務等,用戶需要編寫節點代碼、設置節點屬性和通過輸入輸出關聯節點間依賴。設置好這些後,可以通過試運行來測試計算邏輯是否正確、結果是否符合預期。

——用戶點擊提交,節點進入開發環境中,併成爲某個工作流的其中一個節點。整個工作流可以被觸發調度,這種觸發可以是人爲的(稱之爲“臨時工作流”),也可以是系統自動的(稱之爲“日常工作流”)。當某個節點滿足所有觸發條件後,會被下發到調度系統的執行引擎Alisa中,完成資源分配和執行的整個過程。

如果節點在開發環境中運行無誤,用戶可以點擊發布,將該節點正式提交到生產環境中,成爲線上生產鏈路的一個環節。

2.SQLSCAN

SQLSCAN將在任務開發中遇到的各種問題,如用戶編寫的SQL質量差、性能低、不遵守規範等,總結後形成規則,並通過系統及研發流程保障,事前解決故障隱患,避免事後處理。

SQLSCAN與D2進行結合,嵌入到開發流程中,用戶在提交代碼時會觸發SQLSCAN檢查。SQLSCAN工作流程如下圖所示。

image.png

圖:SQLSCAN工作流程圖

用戶在D2的IDE中編寫代碼。

——用戶提交代碼,D2將代碼、調度等信息傳到SQLSCAN。

——SQLSCAN根據所配置的規則執行相應的規則校驗。

——SQLSCAN將檢查成功或者失敗的信息傳回D2。

——D2的IDE顯示OK(成功)、WARNNING(警告)、FAILED(失敗,禁止用戶提交)等消息。

SQLSCAN主要有如下三類規則校驗:

代碼規範類規則,如表命名規範、生命週期設置、表註釋等。

代碼質量類規則,如調度參數使用檢查、分母爲0提醒、NULL值參與計算影響結果提醒、插入字段順序錯誤等。

代碼性能類規則,如分區裁剪失效、掃描大表提醒、重複計算檢測等。

SQLSCAN規則有強規則和弱規則兩類。觸發強規則後,任務的提交會被阻斷,必須修復代碼後才能再次提交;而觸發弱規則,則只會顯示違反規則的提示,用戶可以繼續提交任務。

3.DQC

DQC(Data Quality Center,數據質量中心)主要關注數據質量,通過配置數據質量校驗規則,自動在數據處理任務過程中進行數據質量方面的監控。

DQC主要有數據監控和數據清洗兩大功能。數據監控,顧名思義,能監控數據質量並報警,其本身不對數據產出進行處理,需要報警接收人判斷並決定如何處理;而數據清洗則是將不符合既定規則的數據清洗掉,以保證最終數據產出不含“髒數據”,數據清洗不會觸發報警。

DQC數據監控規則有強規則和弱規則之分,強規則會阻斷任務的執行(將任務置爲失敗狀態,其下游任務將不會被執行);而弱規則只告警而不會阻斷任務的執行。常見的DQC監控規則有:主鍵監控、表數據量及波動監控、重要字段的非空監控、重要枚舉字段的離散值監控、指標值波動監控、業務規則監控等。

阿里數據倉庫的數據清洗採用非侵入式的清洗策略,在數據同步過程中不進行數據清洗,避免影響數據同步的效率,其過程在數據進入ODS層之後執行。對於需要清洗的表,首先在DQC配置清洗規則;對於離線任務,每隔固定的時間間隔,數據入倉之後,啓動清洗任務,調用DQC配置的清洗規則,將符合清洗規則的數據清洗掉,並保存至DIRTY表歸檔。如果清洗掉的數據量大於預設的閾值,則阻斷任務的執行;否則不會阻斷。

DQC工作流程如下圖所示。
image.png

圖:DQC工作流程圖

4.在彼岸

數據測試的典型測試方法是功能測試,主要驗證目標數據是否符合預期。其主要有如下場景:

(1)新增業務需求

新增產品經理、運營、BI等的報表、應用或產品需求,需要開發新的ETL任務,此時應對上線前的ETL任務進行測試,確保目標數據符合業務預期,避免業務方根據錯誤數據做出決策。其主要對目標數據和源數據進行對比,包括數據量、主鍵、字段空值、字段枚舉值、複雜邏輯(如UDF、多路分支)等的測試。

(2)數據遷移、重構和修改

由於數據倉庫系統遷移、源系統業務變化、業務需求變更或重構等,需要對現有的代碼邏輯進行修改,爲保證數據質量需要對修改前後的數據進行對比,包括數據量差異、字段值差異對比等,保證邏輯變更正確。爲了嚴格保證數據質量,對於優先級(優先級的定義見“數據質量”章節)大於某個閾值的任務,強制要求必須使用在彼岸進行迴歸測試,在彼岸迴歸測試通過之後,才允許進入發佈流程。

在彼岸則是用於解決上述測試問題而開發的大數據系統的自動化測試平臺,將通用的、重複性的操作沉澱在測試平臺中,避免被“人肉”,提高測試效率。

在彼岸主要包含如下組件,除滿足數據測試的數據對比組件之外,還有數據分佈和數據脫敏組件。

數據對比:支持不同集羣、異構數據庫的表做數據對比。表級對比規則主要包括數據量和全文對比;字段級對比規則主要包括字段的統計值(如SUM、AVG、MAX、MIN等)、枚舉值、空值、去重數、長度值等。

數據分佈:提取表和字段的一些特徵值,並將這些特徵值與預期值進行比對。表級數據特徵提取主要包括數據量、主鍵等;字段級數據特徵提取主要包括字段枚舉值分佈、空值分佈、統計值(如SUM、AVG、MAX、MIN等)、去重數、長度值等。

數據脫敏:將敏感數據模糊化。在數據安全的大前提下,實現線上數據脫敏,在保證數據安全的同時又保持數據形態的分佈,以便業務聯調、數據調研和數據交換。

使用在彼岸進行迴歸測試的流程如下圖所示。
image.png
圖:使用在彼岸進行迴歸測試流程圖

注:本書中出現的部分專有名詞、專業術語、產品名稱、軟件項目名稱、工具名稱等,是淘寶(中國)軟件有限公司內部項目的慣用詞語,如與第三方名稱雷同,實屬巧合。

本文節選自《大數據之路:阿里巴巴大數據實踐》已受版權保護,未經授權不得轉載

 

數據中臺是企業數智化的新基建,阿里巴巴認爲數據中臺是集方法論、工具、組織於一體的,“快”、“準”、“全”、“統”、“通”的智能大數據體系。目前正通過阿里雲數據中臺解決方案對外輸出,包括零售金融互聯網政務等領域,其中核心產品有:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章