關于資料中台的測試感悟
- 前言
- 資料中台由來
-
- 芬蘭公司suppercell
- 全球數字生态大會
- 資料中台概念
-
- 阿裡中台(參照)
- 資料中台流程
- 資料中台結構
- 資料中台(公司産品)
-
- 資料中台架構
- 實作技術
-
- Flume
- DataX
- Sqoop
- 資料存儲
- Hue
- 計算架構
- 排程管理
- 執行器(Executor)
- OOzie
- 總結
前言
随着資料中台在阿裡巴巴的提出以及火熱,公司在2019年決定做一款資料中台的服務産品,直到現在(2020年的4月份),大緻接近尾聲。在此總結一下,這一年左右對資料中台的了解。
資料中台由來
芬蘭公司suppercell
2015年年中,馬雲帶領阿裡巴巴集團高管,拜訪了位于芬蘭赫爾辛基的移動遊戲公司Supercell。Supercell當時号稱是世界上最成功的移動遊戲公司,Supercell由6名資深遊戲開發者在2010年創立,旗下擁有《部落沖突》、《皇室戰争》、《海島奇兵》和《卡通農場》這四款超級現象級産品。Supercell是一家典型的以小團隊模式進行遊戲開發的公司,以2到5個員工、最多不超過7個員工組成獨立的開發團隊,稱之為Cell(細胞) ,這也是公司名字Supercell (超級細胞)的由來。團隊自己決定做什麼樣的産品,然後最快時間推出産品公測版,看看遊戲是否受使用者歡迎。如果使用者不歡迎,迅速放棄這個産品,再進行新的嘗試,期間幾乎沒有管理角色的介入。團隊研發的産品失敗後,不但不會受到懲罰,甚至還會舉辦慶祝儀式,以慶祝他們從失敗中學到了東西。這種模式讓Supercell公司成為了年稅前利潤15億美金的遊戲公司。
2016年6月,騰訊以86億美元收購了員工數不超過200人的Supercell公司84.3%的股權,每一名員勞工均貢獻的估值超過3.54億人民币。Supercell的成功很大原因就在于其高效的“部落”組織政策。在supercell僅有的100多人中,被分成若幹個小前台組織,每個小組雖然人不多,但都包含了做一款遊戲需要的所有人才。本來就不大的公司被分成若幹個小組,這樣做的好處是可以快速決策,快速研發,快速把産品推向市場,而遊戲引擎、伺服器等背景基礎則不需要操心。
Supercell 的模式給參加此次拜訪的阿裡高管們很大的震撼,在大家反複的心得交流和讨論中,一個非常重要的問題引起了很多人的反思:資訊時代的公司架構到底應該是怎樣的?正是有了這次拜訪才真正讓阿裡巴巴的上司層有了足夠的決心要将組織架構進行調整,在此次拜訪的半年後,阿裡集團CEO逍遙子發出内部郵件,組織架構全面更新,建設整合阿裡産品技術和資料能力的強大中台,組建“大中台,小前台”的組織和業務體制。
全球數字生态大會
2018年5月21号騰訊召開了全球數字生态大會,會議上騰訊進階副總裁湯道生提出“開放中台能力,助力産業更新”。湯道生介紹,騰訊技術委員會正在推動“開源協同”和“自研上雲”,通過技術整合實作高效的能力傳遞。同時,基于在即時通訊、社交、遊戲等優勢領域中的技術積累,騰訊将進一步開放業界領先的包括使用者中台、内容中台、應用中台等在内的資料中台,以及包括通信中台、AI中台、安全中台等在内的技術中台。企業與開發者可以靈活地把這些技術應用到業務場景中。中台一詞開始步入大家的視角。
資料中台概念
阿裡中台(參照)
所謂的“中台”,并不是阿裡巴巴首先提出的詞語,從字面意思上了解,中台是基于前台和背景之間。
阿裡通過多年不懈的努力,在業務的不斷催化滋養下,将自己的技術和業務能力沉澱出一套綜合能力平台,具備了對于前台業務變化及創新的快速響應能力。
阿裡将中台分為六類:
業務中台,提供重用服務,例如使用者中心、訂單中心之類的開箱即用可重用能力。
資料中台,提供資料分析能力,幫助從資料中學習改進,調整方向。
算法中台,提供算法能力,幫助提供更加個性化的服務,增強使用者體驗。
技術中台,提供自建系統部分的技術支撐能力,幫助解決基礎設施,分布式資料庫等底層技術問題。
研發中台,提供自建系統部分的管理和技術實踐支撐能力,幫助快速搭建項目、管理進度、測試、持續內建、持續傳遞。
組織中台,為項目提供投資管理、風險管理、資源排程等。
資料中台流程
資料中台通過資料技術,對海量資料進行采集、計算、存儲、加工,同時統一标準和口徑。
資料中台把資料統一之後,會形成标準資料,再進行存儲,形成大資料資産層,進而為客戶提供高效服務。這些服務跟企業的業務有較強的關聯性,是這個企業獨有的且能複用的,它是企業業務和資料的沉澱,其不僅能降低重複建設、減少煙囪式協作的成本,也是差異化競争優勢所在。
資料中台建設的基礎還是資料倉庫和資料中心,并且在數倉模型的設計上也是一脈傳承,之是以我們現在處處推崇資料中台建設及應用,一個是因為資料中台确實有過人之處,另一個是這套模型在阿裡展現了巨大的應用價值。
資料中台跟之前大資料平台最大的差別,在于資料中台距離業務更近,能更快速地響應業務和應用開發的需求,可追溯,更精準。
資料中台結構
“資料中台”一般包含以下幾個部分:
資料倉庫:用來存儲資料的,結構性資料、非結構性資料等,還有離線資料和實時資料等;
大資料中間件:包含了大資料計算服務、大資料研發套件、資料分析及展現工具;
資料資産管理:按照阿裡的體系應該分為垂直資料、公共資料和萃取資料3層。
資料中台(公司産品)
資料中台架構
公司資料中台産品将資料中台目錄分為了六個部分。
資料內建交換對應資料擷取的功能,将資料擷取方式分為了兩類:資料采集和資料同步。
資料采集支援 http、ftp、 日志采集和kafak四種采集形式。采集到資料通過資料模組化。分類成格式統一的資料進行存儲。
資料同步支援不同資料源之間的同步。支援自動模組化。建立存儲表,以及可以設定定時任務,定時擷取資料。
資料治理對應資料治理功能,分為中繼資料管理、品質管理、資産管理和主資料管理。
中繼資料管理:完成資料源管理、資料模組化和統一的資料存儲功能。并且對資料字典進行管理。
品質管理:則是對表進行表的檢測和字段的檢測。
資産管理:則是将存儲表進行資産化管理。
主資料管庫:則是将業務主要的業務抽取出來單獨管理。
計算中心 對應資料分析,對資料進行再加工的功能。支援離線任務和實時任務。支援Python、shell、hive、Phoenix、hbase、spark等多種語言。
資料服務對應資料服務,即将資料形成接口,提供給業務使用。
平台管理 主要是對自身平台人員、部門、崗位、菜單、功能權限的管理。
分析中心 則是提供報表系統,支援通過資料庫資料,建立實時的報表和大屏。
實作技術
Flume
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume提供對資料進行簡單處理,并寫到各種資料接受方(可定制)的能力。
有一個池子,它一頭進水,另一頭出水,進水口可以配置各種管子,出水口也可以配置各種管子,可以有多個進水口、多個出水口,水術語稱為Event,進水口術語稱為Source、出水口術語成為Sink、池子術語成為Channel,Source+Channel+Sink,術語稱為Agent。
flume主要是由 source channel sink 三部分組成,這三個元件的主要作用是 搜集資訊,傳遞資訊,存儲資訊;
flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸的系統。支援在日志系統中定制各類資料發送方,用于收集資料;
同時,Flume提供對資料進行簡單處理,并寫到各種資料接受方(比如文本、HDFS、Hbase等)的能力。flume的資料流由事件(Event)貫穿始終。
事件是Flume的基本資料機關,它攜帶日志資料(位元組數組形式)并且攜帶有頭資訊,這些Event由Agent外部的Source生成,當Source捕獲事件
後會進行特定的格式化,然後Source會把事件推入(單個或多個)Channel中。你可以把Channel看作是一個緩沖區,它将儲存事件直到Sink處理完該事件。Sink負責持久化日志或者把事件推向另一個Source。
DataX
DataX 是阿裡巴巴集團内被廣泛使用的離線資料同步工具/平台,實作包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構資料源之間高效的資料同步功能。
DataX目前已經有了比較全面的插件體系,主流的RDBMS資料庫、NOSQL、大資料計算系統都已經接入。
Sqoop
Sqoop是一個用來将Hadoop和關系型資料庫中的資料互相轉移的工具,可以将一個關系型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的資料導進到Hadoop的HDFS中,也可以将HDFS的資料導進到關系型資料庫中。
資料存儲
資料中台資料存儲,根據資料用途不同,将資料存儲到不同的資料存儲對象中。資料中台采用大資料架構。大資料架構采用CDH與nosql、關系資料庫混搭建設。
ODS 采用HBASE,關系資料庫(少量資料)
DW 采用HIVE或greenplum
DM采用關系資料庫(mysql,postgresql,oracle)
Hue
大資料可視化工具采用Hue來進行統一管理,Hue是一個開源的Apache Hadoop UI系統,最早是由Cloudera Desktop演化而來,由Cloudera貢獻給開源社群,它是基于Python Web架構Django實作的。
計算架構
資料計算架構提供MR、SPARK、STORM/FLINK、Tez等計算架構。
MR計算架構主要做離線計算,SPARK計算架構主要做準實時計算。STORM/FLINK主要做流計算,Tez計算是DAG計算架構,可在hive代替MR計算架構,提供更高的計算性能。
排程管理
任務排程由任務排程架構來進行排程,資料平台采用兩個任務排程架構來實作,分别是大資料排程架構oozie,java排程架構quartz。
進行任務排程時,根據任務類型,由排程決策中心自動選擇相應的排程架構進行任務排程。
任務排程觸發支援如下三種類型:
1)時間觸發
開始時間,排程頻率
2)資料觸發
檔案是否存在
資料是否負荷排程标準
3)順序觸發
按任務序列順次執行。
執行器(Executor)
airflow内置了豐富的任務處理器,用于實作不同類型的任務:
BashOperator : 執行bash指令
PythonOperator : 調用python代碼
EmailOperator : 發送郵件
HTTPOperator : 發送 HTTP 請求
SqlOperator : 執行 SQL 指令
除了這些基本的建構塊之外,還有更多的特定處理器:DockerOperator,HiveOperator,S3FileTransferOperator,PrestoToMysqlOperator,SlackOperator …
在目前項目使用了HTTPOperator作為執行器,用于調用JAVA服務,整體結構圖如下:
OOzie
Oozie是一種Java Web應用程式,它運作在Java servlet容器——即Tomcat——中,并使用資料庫來存儲以下内容:
工作流定義
目前運作的工作流執行個體,包括執行個體的狀态和變量
Oozie工作流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。我們會使用hPDL(一種XML流程定義語言)來描述這個圖。
統一排程hadoop系統中常見的mr任務啟動hdfs操作、shell排程、hive操作等。
使得複雜的依賴關系時間觸發事件觸發使用xml語言進行表達開發效率提高。
一組任務使用一個DAG來表示,使用圖形表達流程邏輯更加清晰。
支援很多種任務排程,能完成大部分hadoop任務處理。
程式定義支援EL常量和函數,表達更加豐富。
總結
作用:資料中台是資料存儲、加工、輸出的集合。資料中台建立的作用是,可以為前台迅速提供資料接口。而不再需要考慮其他事情。
模式:資料中台的工作模式為:擷取資料-資料加工-資料統計-資料輸出的模式。
适用:資料中台适用于複雜的、多業務的場景,單業務适用資料中台很難起到作用。
定制資料中台可以對業務提供統一的存儲和管控,對于不同的業務以及算法,需要不同的計算引擎以及處理模式。定制化的制作資料加工功能很有必要。即不同的公司很難有相同的資料中台。