挖掘技術(shù)最優(yōu)選型,從數(shù)倉到數(shù)據(jù)中臺
一、大數(shù)據(jù)演進(jìn),從數(shù)據(jù)倉庫到數(shù)據(jù)中臺
第一階段
21世紀(jì)的第一個10年,企業(yè)級數(shù)據(jù)倉庫(EDW)從萌芽到蓬勃發(fā)展,“IOT”( IBM、Oracle、Teradata)占領(lǐng)了大部分市場,提供數(shù)據(jù)倉庫建設(shè)從硬件、軟件到實施的整體方案。
這個時代的數(shù)據(jù)倉庫實施不僅需要購買大(中、小)型機(jī),配套商用的關(guān)系型數(shù)據(jù)庫(Oracle、DB2、SQL Server)以及一些ETL/OLAP套件,實施成本相對高昂,數(shù)據(jù)倉庫建設(shè)主要集中在金融、電信、大型零售與制造等行業(yè)。
數(shù)據(jù)倉庫的應(yīng)用主要通過為企業(yè)提供報表、分析等數(shù)據(jù),輔助企業(yè)的經(jīng)營決策。像電信行業(yè)的經(jīng)營分析系統(tǒng)、銀行的風(fēng)控管理等,都是這個期間比較典型的應(yīng)用。
第二階段
2010-2015年,大數(shù)據(jù)平臺階段,移動互聯(lián)網(wǎng)的飛速發(fā)展帶動Bigdata(大數(shù)據(jù))的發(fā)展。其中Hadoop生態(tài)技術(shù)開始逐步在國內(nèi)大范圍使用, 企業(yè)只要基 于Hadoop分布式的計算框架,使用相對廉價的PC服務(wù)器就能搭建起大數(shù)據(jù)集群。
數(shù)據(jù)湖的概念也是這個階段誕生(主要是為降低傳統(tǒng)數(shù)倉較為復(fù)雜的中間建模過程,通過接入業(yè)務(wù)系統(tǒng)的原始數(shù)據(jù),包括結(jié)構(gòu)化、非結(jié)構(gòu)數(shù)據(jù),借助hadoop生態(tài)強(qiáng)大計算引擎,將數(shù)據(jù)直接服務(wù)于應(yīng)用)。這個階段不只是金融、電信這些行業(yè),國內(nèi)主流互聯(lián)網(wǎng)企業(yè)也紛紛搭建起大數(shù)據(jù)平臺。
大數(shù)據(jù)應(yīng)用更為豐富,不僅限于決策分析,基于APP/門戶站點的搜索推薦、以及通過A/B Test來對產(chǎn)品進(jìn)行升級迭代等是這個階段常規(guī)的應(yīng)用點,用戶畫像在這個階段也得到重視,主要應(yīng)用于企業(yè)的營銷、運營等場景。
第三階段
就是我們現(xiàn)在所處的階段,數(shù)據(jù)中臺以及云上大數(shù)據(jù)階段,通過前10多年不斷的技術(shù)積累,大數(shù)據(jù)在方法和組織的變革上也有了新的沉淀,主要體現(xiàn)在幾個方面:
1)數(shù)據(jù)統(tǒng)一化
其核心思想是數(shù)據(jù)流轉(zhuǎn)的所有環(huán)節(jié)進(jìn)行統(tǒng)一化,如從采集到存儲到加工等過程,在這些過程中通過建立統(tǒng)一的公共數(shù)據(jù)模型體系、統(tǒng)一的指標(biāo)與標(biāo)簽體系,提高數(shù)據(jù)的標(biāo)準(zhǔn)性、易用性,讓數(shù)據(jù)本身更好地連通,提升使用效率。
2)工具組件化
數(shù)據(jù)在采集、計算、存儲、應(yīng)用過程中涉及多業(yè)務(wù)線條,多場景,將這些場景與工具(采集工具、管道工具、計算&調(diào)度工具、數(shù)據(jù)服務(wù)工具,數(shù)據(jù)管理工具、可視化工具等)進(jìn)行沉淀,研發(fā)出通用、高效的組件化工具,避免重復(fù)開發(fā),降低研發(fā)成本。
3)應(yīng)用服務(wù)化
之前大數(shù)據(jù)應(yīng)用的數(shù)據(jù)調(diào)用比較混雜,有些直接訪問數(shù)倉數(shù)據(jù)表,有些調(diào)用臨時接口等。通過數(shù)據(jù)中臺應(yīng)用服務(wù)化建設(shè),提供標(biāo)準(zhǔn)的應(yīng)用服務(wù),以數(shù)據(jù)可視化產(chǎn)品、數(shù)據(jù)API工具等服務(wù),支撐應(yīng)用的靈活調(diào)用。
4)組織清晰化
數(shù)據(jù)中臺團(tuán)隊專注于數(shù)據(jù)內(nèi)容&數(shù)據(jù)平臺開發(fā),提供各種基于數(shù)據(jù)的能力模塊,而其他部門人員如業(yè)務(wù)產(chǎn)品、運營、分析等角色,只需要借助工具/產(chǎn)品有效地使用數(shù)據(jù),發(fā)揮其價值,無需關(guān)注數(shù)據(jù)加工的過程,做到各盡其職,充分發(fā)揮各自專長,同樣也能達(dá)到降本提效目的。大數(shù)據(jù)團(tuán)隊內(nèi)部本身組織和職責(zé)也傾于清晰化,比如按照職責(zé)分為平臺(工具)研發(fā)、數(shù)據(jù)研發(fā)、數(shù)據(jù)產(chǎn)品、數(shù)據(jù)分析等不同組織。
當(dāng)前階段
數(shù)據(jù)應(yīng)用到各個角落,除了之前可以支撐的決策分析以外,大數(shù)據(jù)與線上事務(wù)系統(tǒng)(OLTP)的聯(lián)動場景非常多,比如我們在電商平臺查詢個人所有歷史訂單,再比如一些刷單、反作弊的實時攔截,以及一些實時推薦等,這些都是通過將數(shù)據(jù)的運算交給數(shù)據(jù)中臺部門處理,前臺部門直接通過API進(jìn)行結(jié)果調(diào)用。數(shù)據(jù)中臺的集中化建設(shè)也更好地支撐起創(chuàng)新業(yè)務(wù),比如通過大數(shù)據(jù)+分析建立起商業(yè)化數(shù)據(jù)變現(xiàn)產(chǎn)品,進(jìn)行數(shù)據(jù)售賣,把數(shù)據(jù)變成新的業(yè)務(wù)。
大家知道共享復(fù)用是中臺建設(shè)中很關(guān)鍵的一個詞,這也是為什么我們很多數(shù)據(jù)中臺下面會包括共享數(shù)據(jù)組,公共數(shù)據(jù)組等。實際上共享復(fù)用并不是大數(shù)據(jù)發(fā)展的一個新詞,在早期數(shù)據(jù)倉庫(建立公共數(shù)據(jù)模型)、大數(shù)據(jù)平臺(研發(fā)一些組件化工具)的建設(shè)中,也是滿足共享復(fù)用的。
如上提到,數(shù)據(jù)中臺本身是組織,方法的升級與變革,更多是利用技術(shù)的進(jìn)步更好地支持這些升級變革,如果你當(dāng)前的建設(shè)還是數(shù)據(jù)平臺+數(shù)倉(數(shù)據(jù)湖等)但是已經(jīng)具備這些方法和特性,我個人認(rèn)為也是合理的。
數(shù)據(jù)中臺的建設(shè)也需要相應(yīng)的成本與門檻,例如集群搭建、工具建設(shè)等。云計算的發(fā)展可以快速提供數(shù)據(jù)中臺建設(shè)的能力,例如企業(yè)無需自己搭建機(jī)房,使用云計算的彈性計算存儲能力以及豐富的工具,可以支撐數(shù)據(jù)中臺的快速搭建。
關(guān)于數(shù)據(jù)中臺的合理性也一直頗有爭議,大型(集團(tuán)型)公司有相互獨立的子公司,數(shù)據(jù)之間不需要太多連接與共享,分別構(gòu)建自己子數(shù)據(jù)中臺也是合理的架構(gòu),集團(tuán)層面可以利用數(shù)據(jù)子中臺進(jìn)行數(shù)據(jù)上報解決集團(tuán)層面數(shù)據(jù)大盤、統(tǒng)計、分析、財務(wù)等訴求。再比如一些小型公司是否需要在一開始就按照數(shù)據(jù)中臺的架構(gòu)進(jìn)行建設(shè),也是存有一些爭議。
數(shù)據(jù)中臺是2015年阿里提出來的雙中臺的概念其中的一個重要組成,阿里作為先驅(qū)者,提供了數(shù)據(jù)中臺架構(gòu)、以及非常多的建設(shè)思路供大家參考。從目前的建設(shè)效果來看,很多公司在數(shù)據(jù)中臺建設(shè)中有不錯的成效(尤其是大中型公司),數(shù)據(jù)中臺整體思路得到了驗證。但是數(shù)據(jù)中臺本身還算一個新鮮事務(wù),這個新鮮事務(wù)目前還沒有標(biāo)準(zhǔn)答案,只有參考答案。
二、數(shù)據(jù)中臺架構(gòu)與技術(shù)選型
1、數(shù)據(jù)中臺架構(gòu)核心組成
我認(rèn)為的數(shù)據(jù)中臺核心架構(gòu)包括四大組成部分,具體是:
底座是數(shù)據(jù)基礎(chǔ)平臺 ,包括數(shù)據(jù)采集平臺&計算平臺&存儲平臺,這些可以自建也可以使用云計算服務(wù);
中間部分兩大塊是中臺的公共數(shù)據(jù)區(qū) ,公共數(shù)據(jù)區(qū)包括數(shù)據(jù)倉庫(數(shù)據(jù)湖) ,主要負(fù)責(zé)公共數(shù)據(jù)模型研發(fā),還包括統(tǒng)一指標(biāo)(標(biāo)簽)平臺,負(fù)責(zé)把模型組織成可以對外服務(wù)的數(shù)據(jù),例如數(shù)據(jù)指標(biāo)、數(shù)據(jù)標(biāo)簽;
上層是數(shù)據(jù)應(yīng)用服務(wù)層 ,主要將公共數(shù)據(jù)區(qū)的數(shù)據(jù)對外包裝并提供服務(wù),包括數(shù)據(jù)接口平臺、多維查詢平臺,數(shù)據(jù)可視化平臺、數(shù)據(jù)分析平臺等。
另外,數(shù)據(jù)研發(fā)平臺和數(shù)據(jù)管理平臺貫穿始終,其中:
1)數(shù)據(jù)開發(fā)平臺包括數(shù)據(jù)開發(fā)的各類工具組合,例如:數(shù)據(jù)管道工具(比如數(shù)據(jù)接入、數(shù)據(jù)導(dǎo)出)、模型設(shè)計工具、腳本開發(fā)工具、數(shù)據(jù)調(diào)度工具等。
2)數(shù)據(jù)管理平臺包括統(tǒng)一元數(shù)據(jù)管理、數(shù)據(jù)質(zhì)量管理、數(shù)據(jù)生命周期管理。針對數(shù)據(jù)全鏈路的數(shù)據(jù)管理,保證數(shù)據(jù)中臺可以監(jiān)控數(shù)據(jù)鏈路中的數(shù)據(jù)流向、數(shù)據(jù)使用效果、數(shù)據(jù)生命周期,以衡量數(shù)據(jù)的價值與成本。
以上是數(shù)據(jù)中臺的核心部分,數(shù)據(jù)中臺的組成也可以更加豐富,比如包括:數(shù)據(jù)資產(chǎn)平臺、算法平臺等等。
在數(shù)據(jù)中臺的建設(shè)中一定不要忽視的是與業(yè)務(wù)的銜接,因為數(shù)據(jù)來源于業(yè)務(wù)并最終應(yīng)用于業(yè)務(wù),在數(shù)據(jù)中臺的建設(shè)中需要有一系列的流程制度明確與業(yè)務(wù)的充分銜接,以保障數(shù)據(jù)源&數(shù)據(jù)產(chǎn)出的質(zhì)量。
2、數(shù)據(jù)中臺技術(shù)選型參考
在搭建數(shù)據(jù)中臺方面,基于開源技術(shù)的選型,尤其是Hadoop生態(tài)圈有非常多的選擇,從數(shù)據(jù)整體流向來看各大層級的選型。
數(shù)據(jù)抽取層: sqoop和flume是兩大主流工具,其中sqoop作為結(jié)構(gòu)化數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫)離線抽取,flume作為非結(jié)構(gòu)化日志接入;
數(shù)據(jù)存儲層: Hadoop文件系統(tǒng)Hdfs大家都比較了解,而kafka作為流式數(shù)據(jù)總線應(yīng)用也非常廣泛;
計算與調(diào)度層 ,包括:
離線計算:離線計算主要是hive,spark,也有部分選用tez
實時計算: 前些年storm,spark比較流行,最近幾年大家紛紛往Flink轉(zhuǎn)型
數(shù)據(jù)調(diào)度: 除了像Airflow Azkaban Oozie等,易觀開源的Dolphin-scheduler也非?;钴S
數(shù)據(jù)引擎層: 也就是我們常說的OLAP層,我們看到這一層里的選擇非常多,就不一一列舉了,(業(yè)務(wù)需求帶動技術(shù)進(jìn)步的典型,選擇豐富主要是可以適配不同的數(shù)據(jù)應(yīng)用場景)。從概念上講分為ROLAP、MOLAP以及兩者混搭。MOLAP提前做一些預(yù)計算,以生成Cube的方式,達(dá)到空間換取查詢效率;而ROLAP是即查即用,效率完全取決于查詢引擎的性能,我個人認(rèn)為從將來看,ROLAP的趨勢會更加明顯,因為沒有中間的數(shù)據(jù)鏈路。但目前看來,沒有一個統(tǒng)一的引擎足以支撐各類數(shù)據(jù)場景(這或許是將來的機(jī)會~);
數(shù)據(jù)可視化層: 比較主流的有Metabase、Superset、Redash,也可以選擇阿里、百度的一些開源控件。
在開源技術(shù)的選擇里,我們看到各層里都有越來越多國內(nèi)開源的工具(也充分體現(xiàn)了我們在大數(shù)據(jù)技術(shù)領(lǐng)域的進(jìn)步)。除了以上列舉的這些,整個Hadoop生態(tài)圈的技術(shù)選擇非常多,可以結(jié)合自己的實際場景選擇自己的架構(gòu),在選型層面可以參照的一些原則,比如:
是否有鮮活的成功案例,優(yōu)先找自己類似業(yè)務(wù)場景;
接口的開放性,與其他組件的兼容性;
社區(qū)活躍性度&發(fā)展趨勢。
當(dāng)然,數(shù)據(jù)中臺的選型不只是開源技術(shù),開源本身也不是完美的,例如維護(hù)開發(fā)成本較高,升級迭代不好把控,通過開源技術(shù)去建立數(shù)據(jù)中臺還是有一定研發(fā)門檻。
所以也有很多商業(yè)化的套件、以及基于云的數(shù)據(jù)組件可以選擇,包括數(shù)據(jù)采集、處理、分析、數(shù)據(jù)可視化全過程,國內(nèi)外有很多廠商都提供了豐富的選擇。尤其在大數(shù)據(jù)可視化這塊,國內(nèi)有許多非常專業(yè)的商業(yè)套件。
三、數(shù)據(jù)研發(fā)實踐
1、數(shù)據(jù)處理架構(gòu)
下面是一個簡單的數(shù)據(jù)處理架構(gòu)演進(jìn)過程:
最早數(shù)據(jù)倉庫的計算只支持批處理,通常是按天定時處理數(shù)據(jù),在后期逐步進(jìn)化到準(zhǔn)實時,本質(zhì)上還是批處理,只是處理頻度上得有提升,到小時級,或者15分鐘這種。
隨著技術(shù)不斷進(jìn)步,后期演化出一條新的流處理鏈路,這個鏈路和之前的批處理分別處理,然后在服務(wù)層面利用大數(shù)據(jù)的計算能力進(jìn)行合并,向外提供離線+實時數(shù)據(jù)服務(wù),這也是著名的lambda架構(gòu)。
最近幾年隨著Flink等技術(shù)的發(fā)展,有一個趨勢是流批一體化,在接入層統(tǒng)一采用流式接入,計算層采用統(tǒng)一套框架支持實時計算+離線計算,批處理僅僅作為流處理的一個特殊場景進(jìn)行支持。整體上可以做到流處理、批處理的自由切換。
流計算和批處理在需求場景上有一些本質(zhì)區(qū)別,前者主要用于支持線上業(yè)務(wù)場景(比如互聯(lián)網(wǎng)的推薦、搜索、風(fēng)控等),而批處理更多是支持離線統(tǒng)計分析。
日出而作,日落而息,大家針對大數(shù)據(jù)的統(tǒng)計分析習(xí)慣不會發(fā)生根本性變化,最簡單的T+1批處理方式也還是數(shù)據(jù)應(yīng)用必不可少的環(huán)節(jié)。在使用同一套架構(gòu)上,由于數(shù)據(jù)源變化&維度變化的多樣性,批處理往往面臨一些復(fù)雜場景,這是采用同一套框架上的一些難點,充分支持好批處理也是將來流批一體框架的發(fā)展方向。
2、數(shù)倉分層與主題分類
1)數(shù)倉分層
與傳統(tǒng)ETL不同的,我們采用的是ELT的數(shù)據(jù)架構(gòu),較為適合在互聯(lián)網(wǎng),總體分為業(yè)務(wù)數(shù)據(jù)層、公共數(shù)據(jù)層、應(yīng)用數(shù)據(jù)層三大層次。
① 業(yè)務(wù)數(shù)據(jù)層(ODS層)
原始數(shù)據(jù)經(jīng)過緩沖層(STG)的加載,會進(jìn)入數(shù)倉的業(yè)務(wù)數(shù)據(jù)層,這一層采用范式建模,基本保持與數(shù)據(jù)源完全一致的結(jié)構(gòu),對于變化的數(shù)據(jù),使用數(shù)據(jù)拉鏈加工與存儲。
這一層選用范式建模,是指保持源系統(tǒng)(例如關(guān)系數(shù)據(jù)庫)的范式結(jié)構(gòu),好處主要是:
一次性接入數(shù)據(jù)源結(jié)構(gòu),針對需求的變動不用頻繁去與數(shù)據(jù)源對接;
便于業(yè)務(wù)研發(fā)更好地理解數(shù)據(jù),同時是也是公司的原始數(shù)據(jù)資產(chǎn)。
針對變化數(shù)據(jù)采用數(shù)據(jù)拉鏈的好處:
保留歷史數(shù)據(jù)的同時,盡可能少占用存儲空間,長期來看,拉鏈存儲比起每天全量保留歷史節(jié)約大概90%空間;
快速、高效地獲取歷史任意一天業(yè)務(wù)系統(tǒng)的快照數(shù)據(jù)。
② 公共數(shù)據(jù)層(包括公共明細(xì)層DWD,公共匯總層DWS)
公共數(shù)據(jù)層是數(shù)據(jù)倉庫的核心層,是整個數(shù)倉中使用率最高的,這一層主要采用的維度建模思路進(jìn)行設(shè)計,類型包括事務(wù)事實、周期快照、累積快照。同時為了方便下游對數(shù)據(jù)的使用,我們會設(shè)計一系列的寬表模型,將不同業(yè)務(wù)過程中的事實進(jìn)行統(tǒng)一整合,包括縱向整合&橫向整合;對于商品、用戶主數(shù)據(jù)類可能分散在不同的源系統(tǒng)中采用縱向整合;橫向整合主要包括交易、內(nèi)容等行為數(shù)據(jù)不同業(yè)務(wù)過程的整合,比如:用戶(用戶信息、注冊信息)購買(下單、支付、結(jié)算、覆約、完成)商品(商品信息,商家信息,等),我們會把訂單流轉(zhuǎn)業(yè)務(wù)過程整合放到一張明細(xì)表里,同時會研發(fā)一些基于用戶、或者商品視角的輕度匯總寬表。
寬表非常便于理解和易用,下游應(yīng)用調(diào)用也方便。我們之前也做過一些統(tǒng)計,在調(diào)用分布來看,寬表的使用占到70%以上。
雖然寬表的使用在數(shù)倉建模中非常普遍,但是也有一些缺陷:
數(shù)據(jù)冗余較多,在存儲、計算、調(diào)用較為占資源,建議盡量還是按場景去使用;
寬表整合的信息較多,數(shù)據(jù)權(quán)限不好控制。建議可以根據(jù)需求,在有限范圍內(nèi)開放整體寬表權(quán)限,或者通過視圖或者子表的方式建立不同權(quán)限的數(shù)據(jù)范圍,適應(yīng)不同組織的需求;
寬表通常依賴比較多,會影響數(shù)據(jù)的產(chǎn)出的時效。
③ 應(yīng)用數(shù)據(jù)層(DWA層)
顧名思義,就是偏向應(yīng)用的數(shù)據(jù)加工,也可以叫集市層,這一層的設(shè)計可以相對靈活,貼近應(yīng)用即可,總體設(shè)計思想仍然可以按維度建模思想為主。
2)主題分類
數(shù)倉架構(gòu)的數(shù)據(jù)分類兩個視角,包括主題視角與業(yè)務(wù)視角。
① 數(shù)據(jù)主題視角
最重要的一個視角,也就是咱們經(jīng)常提到的數(shù)倉主題,主題是將企業(yè)的業(yè)務(wù)進(jìn)行宏觀數(shù)據(jù)抽象,是數(shù)據(jù)倉庫里數(shù)據(jù)的主要組織形式,劃分方法如下:
參照波特價值鏈,分析企業(yè)本身經(jīng)營的業(yè)務(wù)(基本活動、支持型活動),分別對應(yīng)哪些數(shù)據(jù);
參照業(yè)界通用模型,例如像IBM、TD等針對大型行業(yè)(如電信、金融、零售)有一些數(shù)據(jù)主題的通用劃分方法;
對企業(yè)的內(nèi)部數(shù)據(jù)(線上數(shù)據(jù)模塊、數(shù)據(jù)字典)進(jìn)行摸底,確認(rèn)對應(yīng)到哪些主題。
劃分結(jié)果會按照三個層級:主題域--》主題--》子主題。
第一級是主題域,針對相對穩(wěn)定的主題進(jìn)行合并,歸攏到主題域,利于數(shù)據(jù)的理解與建立全局的數(shù)據(jù)資產(chǎn)目錄;
第二級是主題;
第三級是子主題,主要針對有些主題下分類較多,比如供應(yīng)鏈主題下會包含采購、倉儲、配送等子主題。
數(shù)據(jù)主題劃分建議完全互斥,不建議重復(fù)。
② 數(shù)據(jù)業(yè)務(wù)視角
數(shù)據(jù)業(yè)務(wù)域是根據(jù)企業(yè)經(jīng)營的具體業(yè)務(wù),結(jié)合企業(yè)的組織架構(gòu)進(jìn)行劃分,層次和分類可以相對靈活,子分類可以允許重復(fù),因為兩條不同的業(yè)務(wù)域可能經(jīng)營相同的業(yè)務(wù),例如電商、內(nèi)容下都有會員這個業(yè)務(wù)。
上圖是一個比較典型的內(nèi)容+電商的數(shù)據(jù)主題與業(yè)務(wù)分類。
以上一橫一縱兩個視角,將數(shù)據(jù)進(jìn)行更好的歸類,在數(shù)據(jù)模型設(shè)計中會打上相應(yīng)分類標(biāo)簽,從而讓數(shù)據(jù)研發(fā)&數(shù)據(jù)使用人員統(tǒng)一認(rèn)知。以上兩種分類方式主要應(yīng)用于核心的公共數(shù)據(jù)層。
業(yè)務(wù)數(shù)據(jù)層、應(yīng)用數(shù)據(jù)層并不需要遵循以上分類規(guī)則,比如業(yè)務(wù)數(shù)據(jù)層(ODS層)是按照數(shù)據(jù)源進(jìn)行分類,應(yīng)用數(shù)據(jù)層(DWA)是根據(jù)具體的應(yīng)用進(jìn)行分類。
3、數(shù)據(jù)研發(fā)流程
除了合理的架構(gòu)之外,數(shù)據(jù)研發(fā)的流程也很重要,總體流程如下:
包括需求分析/數(shù)據(jù)調(diào)研、數(shù)據(jù)模型設(shè)計、數(shù)據(jù)開發(fā)&測試、上線發(fā)布等流程。
在之前數(shù)據(jù)中臺的核心架構(gòu)提到不閉門造車,數(shù)據(jù)研發(fā)需要與業(yè)務(wù)部門充分銜接,比如在數(shù)據(jù)調(diào)研中要與業(yè)務(wù)研發(fā)同學(xué)進(jìn)行線上數(shù)據(jù)&結(jié)構(gòu)訪談;在數(shù)據(jù)開發(fā)中,與分析&業(yè)務(wù)同學(xué)共同確認(rèn)標(biāo)準(zhǔn)口徑;在數(shù)據(jù)研發(fā)完成后對數(shù)據(jù)使用方進(jìn)行數(shù)據(jù)發(fā)布與培訓(xùn)。
以上流程中,除了需求調(diào)研,其他部分我們都進(jìn)行了線上化,包括數(shù)據(jù)的模型設(shè)計,早期我們會手寫mapping文檔,后期我們逐步把mapping文檔進(jìn)行了線上化,整體的數(shù)據(jù)模型設(shè)計通過模型設(shè)計工具完成,包括從概念模型、邏輯模型到物理模型的設(shè)計。模型設(shè)計完成后,可以一鍵生成數(shù)據(jù)知識文檔。
4、數(shù)據(jù)生命周期管理
數(shù)據(jù)研發(fā)完成,還需要關(guān)注數(shù)據(jù)生命周期,一方面數(shù)據(jù)量的飛速增長不僅僅需要占用大量存儲,比如像自建機(jī)房,會涉及擴(kuò)充機(jī)柜、機(jī)房,往往會面臨一些瓶頸;另外一方面,大量的數(shù)據(jù)會降低數(shù)據(jù)的計算效率,所以從數(shù)據(jù)的生成開始,我們就需要考慮生命周期,并且結(jié)合數(shù)據(jù)的使用情況制定數(shù)據(jù)歸檔、數(shù)據(jù)銷毀等管理策略。
針對數(shù)據(jù)已經(jīng)占用了大量存儲資源,可以采取一系列措施進(jìn)行成本控制,例如:
降存量: 通過數(shù)據(jù)壓縮技術(shù)、降副本等方式,以及在數(shù)據(jù)模型更合理的設(shè)計,將存量數(shù)據(jù)存儲降低;
控增量: 根據(jù)數(shù)據(jù)重要性,可恢復(fù)性等考量角度,確認(rèn)數(shù)據(jù)的保留周期,并根據(jù)周期自動歸檔或刪除;
攤成本: 可以通過一些算法,比如數(shù)據(jù)調(diào)用分布、需求來源等,把成本分?jǐn)偟较鄳?yīng)業(yè)務(wù)部門,讓相關(guān)業(yè)務(wù)部門關(guān)注到成本。
數(shù)據(jù)安全也是數(shù)據(jù)生命周期管理重的一個重要課題,比如針對用戶敏感信息,需要在接入時考慮如何加密。一種做法是通過一個獨立的物理集群對敏感數(shù)據(jù)進(jìn)行隔離與強(qiáng)管控;數(shù)據(jù)使用中,也需要將數(shù)據(jù)劃分不同的安全或敏感等級(例如有些財務(wù)數(shù)據(jù)的非常敏感,需要謹(jǐn)慎對外開放),根據(jù)不同的等級設(shè)定不同的訪問審批機(jī)制。另外,在數(shù)據(jù)歸檔、銷毀也需要制定好配套的安全管理措施,避免安全風(fēng)險。
5、數(shù)據(jù)質(zhì)量管理
數(shù)據(jù)質(zhì)量管理主要包括3個角度:準(zhǔn)確性、及時性、一致性。
管理的環(huán)節(jié)包括:事前、事中、事后、以及事故管理。
針對數(shù)據(jù)運維的告警發(fā)送,傳統(tǒng)的方式主要是短信、郵件、電話;隨著移動辦公工具功能逐步的強(qiáng)大,可以將運維告警以數(shù)據(jù)接口的方式與這些工具進(jìn)行對接,將告警發(fā)送到企業(yè)內(nèi)部的即時通訊工具。
6、數(shù)據(jù)應(yīng)用架構(gòu)
數(shù)據(jù)研發(fā)最終還是需要賦能到業(yè)務(wù)&應(yīng)用,一個合理的數(shù)據(jù)應(yīng)用架構(gòu)是非常關(guān)鍵的,這張圖是一個應(yīng)用架構(gòu)的簡圖參考:
從數(shù)據(jù)的流向上分:
數(shù)據(jù)倉庫(或者數(shù)據(jù)湖):負(fù)責(zé)原始數(shù)據(jù)的計算,主要將數(shù)據(jù)落地到HDFS;
數(shù)據(jù)引擎層:數(shù)據(jù)加工完成之后,會將數(shù)據(jù)推送到不同的 引擎中 ,這一層之前提到選擇非常多,可以根據(jù)自己的場景選擇一個混搭組合,比如我們目前選擇的有Presto,Kylin,Druid,Mysql;
數(shù)據(jù)服務(wù)層:通過統(tǒng)一化的SQL調(diào)用服務(wù),屏蔽底層不同的數(shù)據(jù)引擎,為上層統(tǒng)一查詢提供標(biāo)準(zhǔn)接口;
指標(biāo)平臺:指標(biāo)平臺是一個非常關(guān)鍵的產(chǎn)品,定位于銜接數(shù)據(jù)研發(fā)與數(shù)據(jù)應(yīng)用,包括指標(biāo)的標(biāo)準(zhǔn)定義、邏輯、計算方式、分類等各項內(nèi)容。指標(biāo)分類上我們分為標(biāo)準(zhǔn)指標(biāo)(指標(biāo)口徑經(jīng)過審核過)、以及非標(biāo)準(zhǔn)指標(biāo);
多維查詢:這是我們的一個即席查詢工具,查詢的數(shù)據(jù)主要來源指標(biāo)平臺,可以選定不同的指標(biāo)維度組合進(jìn)行結(jié)果呈現(xiàn),用戶可以一次性查詢得到結(jié)果,也可以將查詢結(jié)果配置成可視化的報表進(jìn)行固化。
中間是統(tǒng)一元數(shù)據(jù)管理:對整個架構(gòu)中可以對外提供服務(wù)的元數(shù)據(jù)進(jìn)行統(tǒng)一管理(包括數(shù)倉的元數(shù)據(jù)、查詢引擎的元數(shù)據(jù)、指標(biāo)元數(shù)據(jù)等),以及監(jiān)控這些元數(shù)據(jù)的調(diào)用情況。
最右側(cè)是權(quán)限管理:權(quán)限管理關(guān)乎到數(shù)據(jù)安全,在設(shè)計上需要考慮周全,比如針對表級、指標(biāo)級、維度級別都可以進(jìn)行控制;同時產(chǎn)品層面也需要靈活配置權(quán)限審批級別與人員。
在面向用戶使用層面,我們主要開放的是多維查詢&可視化,用戶通過多維去查詢各類指標(biāo)&維度數(shù)據(jù),得到數(shù)據(jù)結(jié)果列表,再選擇可視化配置面板,完成各類圖表、表格的自主配置,并發(fā)布到個人看板或者業(yè)務(wù)大盤目錄里。也可以將配置的數(shù)據(jù)看板進(jìn)行靈活組合,定制成一個小型的數(shù)據(jù)產(chǎn)品。
7、數(shù)據(jù)ROI評估
在數(shù)據(jù)研發(fā)中,也要考量數(shù)據(jù)的ROI,下面是一個簡單的ROI模型:
根據(jù)活躍度(調(diào)用次數(shù)等)、覆蓋度(通過血緣關(guān)系找出依賴數(shù)量),以及貢獻(xiàn)度(依賴數(shù)據(jù)的重要等級)來確認(rèn)數(shù)據(jù)的價值。同時會評估數(shù)據(jù)的成本指數(shù)(例如計算成本、存儲成本等)。
通過以上兩者相除,綜合得到數(shù)據(jù)的ROI,針對ROI可以將數(shù)據(jù)分為不同等級,并相應(yīng)進(jìn)行數(shù)據(jù)治理。比如針對價值低,成本高的數(shù)據(jù),可以考慮下線等。
數(shù)據(jù)研發(fā)趨勢&關(guān)注點
提效: 目前借助工具的研發(fā)可以把絕大部分?jǐn)?shù)據(jù)研發(fā)工作線上化,將來借助AI等能力,實現(xiàn)數(shù)據(jù)處理中包括開發(fā)、運維的自動化,提升處理效率;
靈活: 流批一體化,包括流處理與批處理自由切換,之前已經(jīng)提到過,個人認(rèn)為也是一個發(fā)展的趨勢;
降本: 數(shù)據(jù)研發(fā)鏈路的成本控制,在數(shù)據(jù)建設(shè)的早期通常不太引起關(guān)注,隨著數(shù)據(jù)量不斷的積累,往往存儲、計算成本成為瓶頸。針對數(shù)據(jù)建設(shè)成本需提前考慮;
算力: 我們看到Google,IBM和阿里都在研究量子計算,將來的數(shù)據(jù)中間層(比如數(shù)倉的公共模型)是否可以考慮虛擬化(比如只保留規(guī)則&數(shù)據(jù)結(jié)構(gòu)),具體數(shù)據(jù)內(nèi)容在應(yīng)用發(fā)起時,即調(diào)即用,更多時候可以不需要占用存儲資源。算力的不斷提升,有可能會顛覆一些傳統(tǒng)數(shù)據(jù)建設(shè)的思路。
> > > >
Q&A
Q1:請問貴公司如何壓縮數(shù)據(jù)?又如何刪除副本呢?
A:我們主要使用parquet +snappy壓縮;另外,如果發(fā)現(xiàn)壓縮率較低,可以通過排序來調(diào)整數(shù)據(jù)分布,降副本可以了解下EC糾刪碼技術(shù)。
Q2:對于批處理效率低的問題該怎么處理?
A:具體可以看什么原因?qū)е拢绻钦w效率低,可以看資源利用是否集中,如果集中,可以考慮任務(wù)分等級錯峰進(jìn)行隊列隔離等;如果是個別任務(wù)問題,那就要考慮邏輯和加工鏈路是否有問題,比如說可以全量改增量處理,邏輯參數(shù)優(yōu)化;如果傾斜導(dǎo)致可以針對具體傾斜原因采取不同的優(yōu)化方式。
Q3:請問基于Hadoop生態(tài)組件構(gòu)建DW存在哪些不足?與MPP比較?
A:如果之前一直是按照傳統(tǒng)商業(yè)套件進(jìn)行建設(shè),可能在數(shù)據(jù)不能直接update這個點上不習(xí)慣。另外大部分技術(shù)都是經(jīng)歷反復(fù)演進(jìn)才達(dá)到穩(wěn)定的,所以最好能選用成熟組件。與MPP比較,MPP橫向擴(kuò)充到一定規(guī)??赡軙衅款i,而Hadoop集群可以靈活擴(kuò)充節(jié)點來增加算力,比如現(xiàn)在國內(nèi)單集群幾千臺、上萬臺的場景都有。
Q4:數(shù)據(jù)中臺建設(shè)團(tuán)隊的KPI怎么評定?
A:需求響應(yīng)效率、前臺數(shù)據(jù)調(diào)用效率、數(shù)據(jù)覆蓋度、數(shù)據(jù)準(zhǔn)確性、及時性、用戶滿意度、成本控制效果等。
Q5:您對HATP在行業(yè)應(yīng)用趨勢和方向如何看?
A:HATP我個人沒有研究;如果HATP能解跨不同環(huán)境之間的數(shù)據(jù)連通性,應(yīng)該可以替代一些當(dāng)前大數(shù)據(jù)的應(yīng)用場景。
Q6: 對于搭建數(shù)據(jù)中臺的生態(tài)工具,有什么建議嗎?
A:文中有一些常規(guī)的選型(主要調(diào)研了當(dāng)前一些主流工具),基本上都是經(jīng)過了驗證過,更多還是找適合自己場景的工具。
Q7:請問現(xiàn)在對提效方面有什么好的開源的線上工具嗎?
A:建模、開發(fā)中的一些提效小工具成本不高可以考慮自研,但是復(fù)雜一些例如任務(wù)調(diào)度完全可以找到成熟的開源工具。
Q8:范式建模層,是否會形成統(tǒng)一數(shù)據(jù)模型,即one model?
A:不會,范式主要應(yīng)用在業(yè)務(wù)數(shù)據(jù)層,原則上我們不對外提供這一層的服務(wù),主要用于加工DW層。
Q9:業(yè)務(wù)數(shù)據(jù)層,如果設(shè)計成拉鏈表,抽取數(shù)據(jù)是肯定是做更新插入操作,增量和存量數(shù)據(jù)做比對,很耗性能,特別是存量數(shù)據(jù)是海量的情況下,請問下如何處理此類問題?
A:大表拉鏈效率慢優(yōu)化可以考慮減少計算數(shù)據(jù)量,例如把穩(wěn)態(tài)數(shù)據(jù)進(jìn)行歸檔,不參與計算?;蛘呖梢試L試通過冷熱數(shù)據(jù)分離,再視圖合并。
Q10:請問mapping是建模管理的?是否用用ERWIN或者PD工具吧?
A:以前我們是通過excel模版建模并生成mapping文檔,現(xiàn)在只是把這個模版搬到線上,這個小工具可以連通到建表,并且發(fā)布到數(shù)據(jù)知識系統(tǒng)。我們沒有使用ERWIN或者PD,模型之間的關(guān)系會輔助用一些思維導(dǎo)圖軟件。
Q11:為什么要基于Hive建數(shù)倉?它不支持索引、更新、事務(wù)。
A:Hive 搭建數(shù)倉當(dāng)前來看處理效率、穩(wěn)定性都是經(jīng)過驗證過的。更新可以通過高效的insert over write來解決。
Q12:數(shù)據(jù)湖是什么技術(shù)?跟數(shù)倉的關(guān)系是啥?
A:跟數(shù)倉是兩個獨立的概念,通過直接接入源系統(tǒng)的原始數(shù)據(jù)(包括結(jié)構(gòu)化、非結(jié)構(gòu)化),利用大數(shù)據(jù)強(qiáng)大的計算能力,直接將數(shù)據(jù)服務(wù)于應(yīng)用。主要為縮短傳統(tǒng)數(shù)倉的中間建模與處理(ETL)過程,目前有看到一些云+數(shù)據(jù)湖的方案。
Q13:業(yè)務(wù)元數(shù)據(jù)、技術(shù)元數(shù)據(jù)在中臺中如何統(tǒng)一對應(yīng)管理?
A:通過統(tǒng)一元數(shù)據(jù)管理工具例如指標(biāo)元數(shù)據(jù)管理工具、數(shù)據(jù)表元數(shù)據(jù)管理工具,可以將業(yè)務(wù)元數(shù)據(jù)對應(yīng)到技術(shù)元數(shù)據(jù),建議可以在工具中設(shè)置一些強(qiáng)規(guī)范,來保證統(tǒng)一對應(yīng)。
Q14:使用kylin做olap很不靈活,貴公司是使用kylin嗎?您認(rèn)為kylin主要是用于什么場景?
A:是的,大部分場景使用的是kylin,kylin主要使用用業(yè)務(wù)形態(tài)相對穩(wěn)定、計算的維度指標(biāo)矩陣相對固定、原始數(shù)據(jù)量較大且有去重類指標(biāo)計算的情況。通過一些模型設(shè)計和技術(shù)手段可以相對降低kylin靈活性差的問題,比如:模型設(shè)計的抽象化、底層使用視圖、使用Hybrids進(jìn)行橋接等。
Q15:貴司數(shù)據(jù)治理工具用的哪個?
A:目前沒有專門的工具,從一開始保持?jǐn)?shù)據(jù)的規(guī)范化建設(shè)、合理的架構(gòu),可以降低治理的工作;如果要治理可以考慮通過全鏈條元數(shù)據(jù)管理過程配合數(shù)據(jù)治理。
Q16:所講的體系如何保障數(shù)據(jù)業(yè)務(wù)化的、端到端的實時應(yīng)用?
A:我們目前的場景還不多,可以了解其他互聯(lián)網(wǎng)場景豐富一些方案。如果是支撐端到端的實時應(yīng)用,要保證穩(wěn)定性需要在服務(wù)層有多種調(diào)用方案,例如針對同一個應(yīng)用,可以有常規(guī)API調(diào)用以及降級API。
Q17:關(guān)于指標(biāo)體庫如何設(shè)計?以及ad-hoc查詢場景的支持。
A:我們預(yù)計在5、6月會組織一次《數(shù)據(jù)模型設(shè)計實踐》以及《指標(biāo)體系與ad-doc》的直播分享,會有專門負(fù)責(zé)這塊數(shù)據(jù)架構(gòu)的小伙伴來給大家介紹。