字節(jié)跳動一站式數(shù)據(jù)治理思考及實踐

一. 機遇與挑戰(zhàn)

數(shù)據(jù)治理工作有很多挑戰(zhàn),最主要的一點是落地比較困難。
首先,治理工作中與業(yè)務(wù)有一定的矛盾。
第二,治理涉及的組織和管理難度大。
第三,規(guī)范“人”的動作難度大,治理過程中,需要依靠人來推進和執(zhí)行,人員能力參差不起,組織文化、目標(biāo)也存在不對齊的情況。
第四,缺乏適配性強的產(chǎn)品工具。因為治理工作范圍廣,鏈路長,并且涉及跨部門、跨系統(tǒng)的目標(biāo)對齊,需要一個完備的產(chǎn)品平臺。

下面結(jié)合字節(jié)的特點,介紹數(shù)據(jù)治理工作的機遇和挑戰(zhàn)。
- 字節(jié)文化
首先,字節(jié)業(yè)務(wù)多,多業(yè)務(wù)齊頭并進發(fā)展,需要快速響應(yīng)業(yè)務(wù)需求;
第二,字節(jié)的 OKR 文化,使得每個人都可以參與數(shù)據(jù)治理的規(guī)劃和策略的制定,并且主動尋找實現(xiàn)路徑,快速對齊;
第三,為追求高效治理,沒有設(shè)立統(tǒng)一的數(shù)據(jù)治理委員會,而是各個部門根據(jù)各自的業(yè)務(wù)情況進行治理。
- 業(yè)務(wù)第一
字節(jié)業(yè)務(wù)規(guī)模大,并且以數(shù)據(jù)作為驅(qū)動構(gòu)建閉環(huán)的產(chǎn)品較多,導(dǎo)致數(shù)據(jù)質(zhì)量對業(yè)務(wù)的影響非常大。
綜上所述,數(shù)據(jù)治理在字節(jié)是挑戰(zhàn)機遇與并存的工作。
二. 數(shù)據(jù)治理思路
2.1 新型數(shù)據(jù)治理 - 分布式數(shù)據(jù)自洽

針對上述問題,提出了分布式數(shù)據(jù)自治的思路, 綜合考慮治理收益、業(yè)務(wù)影響,執(zhí)行效率。
首先,業(yè)務(wù)影響方面,為保證影響小,治理工作按照業(yè)務(wù)單元進行。一個業(yè)務(wù)單元可能是一個小團隊或者小項目,作為數(shù)據(jù)治理的范圍和目標(biāo)。
第二,需要沉淀各業(yè)務(wù)線的治理經(jīng)驗,提升治理效率;通過產(chǎn)品輔助業(yè)務(wù)自驅(qū),實現(xiàn)規(guī)則化、策略化、自動化治理。通過工具等平臺能力,降低治理門檻。并且支持靈活的治理方式,如管理者視角,自上而下規(guī)劃性治理,和一線執(zhí)行者視角,自下而上推動治理。
第三,需要適配性強,建設(shè)產(chǎn)品來覆蓋治理全鏈路。
實現(xiàn)多種場景中,產(chǎn)品都有能力覆蓋,多個模塊可以獨立使用,按需組合;并且提供完整的開發(fā)能力,支持業(yè)務(wù)根據(jù)自身特點和發(fā)展階段,自行接入。
2.2 集中式 VS 分布式

分布式治理,與傳統(tǒng)集中式治理相比,有很多優(yōu)勢。
- 集中式治理,需要制定制度進行大范圍組織,劃分權(quán)責(zé),定期抽查考核,建設(shè)周期長,適配能力弱,并且組織投入多。
- 分布式自治,業(yè)務(wù)影響?。恢芷诙?,見效快;效率高,節(jié)省人力;便于算清對業(yè)務(wù)的收益,降低成本。
三. 技術(shù)架構(gòu)演進
針對上述思路,平臺工具如何支撐數(shù)據(jù)治理?
3.1 解決方案 - 一站式

首先提出了一站式的解決方案。將治理劃分為三層。
- 第一層 - 視圖層
從資產(chǎn)視角、管理者視角 、實施者視角 縱覽數(shù)據(jù)治理的情況。
- 第二層 - 方案層
- 針對治理過程,提出了雙路徑。
- 路徑一【主動規(guī)劃】規(guī)劃式流程
- 主要解決的問題是:確定目標(biāo)后,如何推進執(zhí)行。將治理目標(biāo),拆解成治理規(guī)則,進行診斷,根據(jù)診斷結(jié)果,執(zhí)行治理。治理結(jié)束后,通過收益統(tǒng)計、改進計劃等進行總結(jié)。
- 路徑二【系統(tǒng)發(fā)現(xiàn)】響應(yīng)式流程
由系統(tǒng)發(fā)現(xiàn)的問題,通過高警等形式,通知到資產(chǎn)責(zé)任人,進行處理。通過根因分析等,進行總結(jié)。
- 第三層 - 工具層
為上述兩層,提供完備的治理工具。覆蓋質(zhì)量、安全、成本、穩(wěn)定性、報警與起夜等場景,通過打通基礎(chǔ)服務(wù),賦能上述兩條治理路徑。
3.2 平臺建設(shè) - 治理方案 - 規(guī)劃式流程
接下來將為大家介紹,在治理過程中,我們兩條路徑的具體建設(shè)過程。

路徑一:規(guī)劃式治理
目標(biāo)是資產(chǎn)清晰,規(guī)則豐富,動線完整,收益準(zhǔn)確。
首先需要制定目標(biāo),包括健康分目標(biāo),以及降低存儲、計算資源的目標(biāo)。針對目標(biāo),建立治理方案,包括劃分治理域,以及在治理域內(nèi)通過規(guī)則,發(fā)現(xiàn)有問題的資產(chǎn)。建立方案后,由系統(tǒng)找到有存儲、計算等問題的明細(xì)。對上述找到的問題進行分析,通過消息催辦等方式,將問題下發(fā)到責(zé)任人,進行治理。系統(tǒng)會對治理的效果進行采集,反饋目標(biāo)達成情況,并對一段時間內(nèi)的治理結(jié)果進行驗收和統(tǒng)計。
以上是規(guī)劃式流程的主線思路 。
下面介紹如何實現(xiàn)規(guī)劃式流程的幾個目標(biāo)。
3.2.1 資產(chǎn)清晰

主要從治理全景和健康分兩個方面對資產(chǎn)進行描述。
第一,治理全景。 從各個維度,通過明細(xì)、統(tǒng)計量,對團隊或個人資產(chǎn)的具體情況進行描述。如各個表占了多少存儲空間,計算資源使用情況,任務(wù)報警率、起夜率,數(shù)據(jù)及時性和質(zhì)量等。
第二,對資產(chǎn)健康度進行衡量。 根據(jù)三個層級建立了健康分體系。第一層是根據(jù)治理的垂直方向劃分,包括:存儲健康分、計算健康分、質(zhì)量健康分等。第二層在第一層的維度下,細(xì)化了問題大類。如存儲方面,包括:無效存儲、異常存儲等;質(zhì)量方面,包括:及時性、報警、元信息配置規(guī)范等。
在第二層的劃分下,將具體問題通過標(biāo)簽定義,得到了第三層。比如無效存儲方面,涉及了 TT 不合理、熱度方面信息(xx 天無查詢)等。
綜上,主要通過健康度和治理全景將資產(chǎn)清晰地表述出來。通過元數(shù)據(jù)倉庫,進行底層數(shù)據(jù)的建設(shè)。
3.2.2 規(guī)則豐富
目前平臺具備了完備的治理規(guī)則,涵蓋了存儲、計算、質(zhì)量、報警 4 大維度,50 多個規(guī)則。
其中包括全局規(guī)則,如:生命周期永久、近 7 天產(chǎn)出為空、暴力掃描任務(wù)等;也包括一些自定義的規(guī)則,如生命周期 xxxt 天,近 xxx 天產(chǎn)出為空等。同時還兼具了一些挖掘類規(guī)則,包括基于統(tǒng)計信息進行聚合后形成的規(guī)則,以及基于資產(chǎn)(包括庫、表等)相似性,通過關(guān)聯(lián)、排序來發(fā)現(xiàn)問題。
規(guī)則部分以及能力建設(shè)方面分為以下幾部分:首先通過底層與平臺基礎(chǔ)組件打通,將數(shù)據(jù)收集上來,形成數(shù)據(jù)倉庫的基礎(chǔ)層;基于基礎(chǔ)層對數(shù)據(jù)資產(chǎn)進行畫像描述,進一步形成特征域,做特征挖掘和關(guān)聯(lián)分析;然后將應(yīng)用的數(shù)據(jù),放到數(shù)據(jù)服務(wù)中,對外提供靈活的數(shù)據(jù)查詢能力。
最上層為組合在線的規(guī)則引擎,將數(shù)據(jù)和規(guī)則進行聯(lián)動,應(yīng)用于規(guī)則建設(shè)。
3.2.3 動線完整
標(biāo)出有問題的資產(chǎn)后,如何盡快完成治理,減少和業(yè)務(wù)的沖突,提高效率非常重要。
基于治理平臺的能力,在各個垂直場景中,我們建設(shè)了比較完善的治理動線。
大致的思路是,把能力劃分為幾類:
- 任務(wù)治理方面,和任務(wù)開發(fā)、任務(wù)運維平臺打通,支持任務(wù)的關(guān)閉、調(diào)整、調(diào)參,鏈路優(yōu)化等;
- 庫表規(guī)范方面,和元數(shù)據(jù)平臺聯(lián)動,實現(xiàn)表管理、庫管理、資產(chǎn)移交、屬性修改等;
- 生命周期方面,通過治理平臺,和底層的存儲(包括 hdfs, hive 等組件)打通,形成閉環(huán)式的治理;
- 在數(shù)據(jù)質(zhì)量方面,包括 sla 的及時性,離線、實時數(shù)據(jù)的監(jiān)控,會和具體的質(zhì)量規(guī)則平臺進行強聯(lián)動,互相登記數(shù)據(jù)、進行 sla 的簽署、和強跳轉(zhuǎn)交互等。
以上是動線完整的部分,能夠使用戶在平臺中,通過很低的操作成本,完成一站式的閉環(huán)治理。
3.2.4 收益準(zhǔn)確
第四個是收益的準(zhǔn)確部分。
我們做了治理后,付出的人里成本、精力、怎么知道是有效或者達標(biāo)呢?如何衡量這一階段的工作是有價值的,治理是有收益的?這就需要在平臺建設(shè)上,準(zhǔn)確度量收益。目前統(tǒng)一建設(shè)了基于事件中心的底層框架??傮w來說,就是定義數(shù)據(jù)的消費模型,通過上面的一些消息通道,來定時收集各個平臺操作的消息;同時定義了事件的 SDK, 并兼容 API 的方式,靈活對接上游不同的平臺。
目前來說,我們和研發(fā)平臺、元數(shù)據(jù)平臺、質(zhì)量平臺等,大部分都是通過消息訂閱和消費的方式,將治理的事件,接入到事件中心里,并將事件中心的離線數(shù)據(jù) dump 到數(shù)據(jù)倉庫,進行離線加工,同時我們會將最新的事件,注入在線的元數(shù)據(jù)服務(wù)中,來及時完成治理收益的計算。
3.2.5 技術(shù)架構(gòu)
在規(guī)劃式流程的技術(shù)方面,遵循的原則是:統(tǒng)一的數(shù)據(jù)查詢、各種規(guī)則靈活組合,操作結(jié)耦,治理收益準(zhǔn)確。
整體的平臺后端,會負(fù)責(zé)分發(fā)和轉(zhuǎn)換治理的各種邏輯,包括查數(shù)、設(shè)置目標(biāo)、健康分的展示和透出,治理的操作等。
后端平臺拿到消息后,會做具體事件的拆分。比如說看板類查數(shù)的部分,統(tǒng)一將需求發(fā)送到查詢服務(wù)里,數(shù)據(jù)查詢服務(wù)會對底層存儲做適配,通過點查、list、聚合類的查詢,根據(jù)底層選取的存儲引擎的特點,解析后,選取不同的底層存儲。
規(guī)則引擎服務(wù)部分,可以與數(shù)據(jù)查詢服務(wù)聯(lián)動。通過數(shù)據(jù)查詢服務(wù)取到數(shù)據(jù)后,通過規(guī)則的定義形成標(biāo)簽,這個過程可以抽象成一個服務(wù)。這個服務(wù)對外可以提供對資產(chǎn)標(biāo)簽的描述,作為通用的能力。
在治理的具體實施部分,我們統(tǒng)一抽象成一個后臺的模塊。具體的實施,如設(shè)置消息、設(shè)置 ddl、進行刪除等,統(tǒng)一由這個模塊下發(fā)到組件層,進行操作,在組件層或其他平臺進行了有效操作后,由事件的收集服務(wù),將事件收集上來,寫回到數(shù)據(jù)查詢服務(wù),形成治理收益的匯總。
3.3 平臺建設(shè) - 治理方案 - 響應(yīng)式流程
第二條路徑是響應(yīng)式路徑。主要做事后治理、問題總結(jié)、經(jīng)驗沉淀。
在這條路徑里,大致分了幾個部分,首先以報警、消息作為源頭。包括 sla 破線告警,數(shù)據(jù)質(zhì)量任務(wù)的報警,計算任務(wù)的報警等。
系統(tǒng)會將上述消息進行匯總,展示在治理平臺中。治理平臺可以對消息進行搜索,對問題進行歸因,并做根因打標(biāo),把問題定位到組件、平臺等問題上;再通過一些組織方式,比如通過系統(tǒng)來去找到組件方面的對接人,或通過組織會議,將問題提給相關(guān)的責(zé)任方,推動他們做一些有針對性的保障。做了以上推進后,我們會將系統(tǒng)中的問題描述、改進計劃列出來,有針對性地對問題進行定義,以及分析該怎么做達到事后治理的目的。最后,在問題解決后,推動方案的分享、沉淀和復(fù)用。
3.3.1 技術(shù)架構(gòu)
響應(yīng)式治理的架構(gòu),和規(guī)劃式治理類似,區(qū)別是里面消息服務(wù)的部分。這部分作為基礎(chǔ)的能力,將大數(shù)據(jù)平臺的各種產(chǎn)品,包括研發(fā)平臺、質(zhì)量平臺等所有的消息,接到統(tǒng)一的服務(wù)中,所有消息的發(fā)出,都通過服務(wù)對外。這個消息服務(wù)成為所有報警消息的入口。通過它可以做一些升級策略,如消息聚合、加急等。此外,和規(guī)劃式治理類似,后端平臺控制響應(yīng)式路徑的邏輯,包括消息訂閱、問題登記、總結(jié)復(fù)盤模塊等。其他部分和規(guī)劃式路徑類似。
3.4 平臺建設(shè) - 開放接入
講完兩條路徑,下面是一些實踐中的解決思路。因為業(yè)務(wù)有各自發(fā)展的階段,以及不同的治理目標(biāo)。比如說,比較新興的業(yè)務(wù),現(xiàn)在主要關(guān)注的是sla的能力;一些成熟的業(yè)務(wù),現(xiàn)在做的已經(jīng)比較好了,要去做規(guī)范性。不同業(yè)務(wù)有不同的訴求。如何避免一刀切,讓不同的業(yè)務(wù)用平臺進行治理,開放能力非常重要。開放能力是說,要構(gòu)建治理生態(tài),業(yè)務(wù)可以自定義地接入治理規(guī)則,實施治理。
當(dāng)前階段,將治理分為了四個象限,橫坐標(biāo)為元數(shù)據(jù)部分,縱坐標(biāo)為規(guī)則的部分。規(guī)則包括表達式和算法包等形式。系統(tǒng)提供的能力,主要在一象限:定義的標(biāo)準(zhǔn)的元數(shù)據(jù),和統(tǒng)一的表達式,通過規(guī)則引擎直接適配。如果業(yè)務(wù)方有第三方元數(shù)據(jù),來接入我們已定義好的規(guī)則,如圖中第二象限的部分,需要定義第三方元數(shù)據(jù)的接入。接入的第三方元數(shù)據(jù)需要遵循接入的標(biāo)準(zhǔn),通過規(guī)則引擎進行適配。規(guī)則部分如果要做升級,比如進行相似度計算等,不是在一維上對資產(chǎn)打標(biāo),不是純表達式可以描述的規(guī)則,這種情況下將其定義為算法包或者邏輯單元。需要定義好輸入輸出的標(biāo)準(zhǔn),通過調(diào)用包或者插件的方式,執(zhí)行邏輯。第三方元數(shù)據(jù)和算法包的結(jié)合同理,定義好輸入輸出,并關(guān)注包的執(zhí)行效率、時間等,就能滿足整體的接入。
整體來說,將平臺能力開放出去,讓業(yè)務(wù)接入自己的規(guī)則和數(shù)據(jù),需要定義好標(biāo)準(zhǔn)的元數(shù)據(jù)格式,比如:可以定義行是具體的資產(chǎn),列是具體的 profile。業(yè)務(wù)方負(fù)責(zé)加工自己的接入部分,完成配置和數(shù)據(jù)映射,通過表達式或者算法包的計算后,定義統(tǒng)一的輸出,就可以對接到系統(tǒng)。目前,系統(tǒng)支持對單資產(chǎn)打標(biāo)(pointwise)和兩個資產(chǎn)關(guān)聯(lián)打標(biāo)(pairwise)。
3.5 平臺建設(shè) - 智能化能力
接下來是近期在做的事情。平臺工具側(cè)做了很多能力上的建設(shè),通過智能化的方式,進一步降低治理成本,提高治理效率。下面介紹幾個有代表性的落地。
3.5.1 任務(wù) SLA 簽署推薦
在做 SLA 簽署時候,任務(wù)上下游,可能存在幾百上千個節(jié)點,怎樣估計出應(yīng)該在什么時間產(chǎn)出呢?我們目前是通過血緣關(guān)系,找到節(jié)點所在的關(guān)鍵路徑,基于運行時間,進行權(quán)重的分配,來確保節(jié)點有相對合理的 SLA buffer。
推薦簽署部分,目前已經(jīng)有了專利,并有了一定的效果。現(xiàn)在在做第二期,基于運行失敗概率分布的情況,來調(diào)整上游 buffer 壓縮,下游 buffer 寬松的問題。
3.5.2 動態(tài)閾值監(jiān)控
解決的問題是:數(shù)據(jù)量正常分布,但看起來異常化的情況。比如流量日志在假期或活動日,出現(xiàn)正常突增或突降的情況。
平時做質(zhì)量監(jiān)控時候,會用絕對值閾值來限定作報警范圍,比如參考?xì)v史7天波動率等。這樣,容易造成假期或活動日誤報警,給值班人員造成不必要的打擾。動態(tài)閾值就是為了解決這個問題。主要思路是:基于數(shù)據(jù)的歷史情況,歸納為幾種分布。針對不同的分布,提供不同的預(yù)測方法,預(yù)測整個表在某一天應(yīng)該是在什么量級,然后基于數(shù)據(jù)量級設(shè)置上下閾值,超出閾值再進行報警或者消息通知。
在數(shù)據(jù)分布方面,針對我們自己的業(yè)務(wù),劃分了幾種典型的分布:數(shù)據(jù)量單調(diào)不減的,大部分為快照表或者全量表;日志類的表,長時間觀察時,假期或活動日可能出現(xiàn)數(shù)據(jù)量突增或突降;維度表,數(shù)據(jù)量比較穩(wěn)定,維度發(fā)生變化時,會反應(yīng)出一定的問題;以及與維度表類似的一些波動比較小的分布。
基于不同的數(shù)據(jù)分布,目前采取了四種不同的預(yù)測方法:
移動平均法、指數(shù)平滑法、自回歸法、同期檢測法。針對不同的波動做擬合,目前得到了一定的驗證。
3.5.3 有相似任務(wù)識別
由于業(yè)務(wù)龐大、開發(fā)人員多、任務(wù)量大,在開發(fā)任務(wù)時,并不知道是否線上已有類似的任務(wù),跨團隊情況更明顯,因此詳細(xì)任務(wù)的檢測很有必要。
基本思路是將目標(biāo)源代碼和待檢測源代碼 sql 的 ast 序列化,然后進行向量化,對特征向量做余弦相似度計算,結(jié)果通過產(chǎn)品進行透出,再由業(yè)務(wù)進行標(biāo)注,經(jīng)過人工的確認(rèn)分析,對任務(wù)進行合并或下線。
以上是我們在智能化方面的一些探索。
3.6 平臺建設(shè) - 架構(gòu)總結(jié)
總結(jié)一下,平臺總體架構(gòu)分為三層:
- 產(chǎn)品層,將管理者視角和執(zhí)行者視角做了區(qū)分。具體治理時候,通過雙路徑的方式:做規(guī)劃式治理時候,從目標(biāo)制定、規(guī)則圈選、治理實施、到收益統(tǒng)計、經(jīng)驗總結(jié);第二條路徑是響應(yīng)式治理。通過訂閱消息、發(fā)現(xiàn)問題、實施治理、登記問題、復(fù)盤總結(jié)幾個步驟進行治理。
- 服務(wù)層,提供了整體的服務(wù)邏輯層,在下面拆分了不同的模塊,特別是接入服務(wù),提供了開放的能力。通過對任務(wù)執(zhí)行、事件中心等不同模塊進行拆解,方面我們針對各種不同的場景,提供靈活服務(wù)。
- 數(shù)據(jù)組件層,作為基礎(chǔ)建設(shè)層,包括元數(shù)據(jù)倉庫的建設(shè)、大數(shù)據(jù)組件的適配。
四. 未來展望
未來展望主要由三個部分。
- 體驗打磨
平臺建設(shè)階段,已經(jīng)建立了比較完善的能力,在內(nèi)部得到了有效的使用。進一步,會更加貫徹雙路徑的建設(shè),規(guī)劃式路徑上,使資產(chǎn)更清晰、規(guī)則更豐富,進一步打磨動線,并提高收益準(zhǔn)確性。
響應(yīng)式路徑上,除了問題登記、歸因、總結(jié)外,后面會主要針對總結(jié)歸納、經(jīng)驗沉淀進行建設(shè),使經(jīng)驗更好地復(fù)用到其他業(yè)務(wù)方。
- 開放能力
基于分布式自治的理念,目前沒有采取一刀切的策略進行治理。大家可以自定義自己的目標(biāo),對齊自己的 SLA 等。后續(xù)會支持自定義健康分,不同業(yè)務(wù)可以自己定義健康分的組織形式和描述。第二點是自定義方案。我們會進一步打磨自定義規(guī)則的接入流程,并將規(guī)則能力進一步開放化,支持業(yè)務(wù)調(diào)用。業(yè)務(wù)拿到打標(biāo)后的信息,可以做自己的資產(chǎn)分析。第三點是打通業(yè)務(wù),進一步以業(yè)務(wù)視角看待問題,針對業(yè)務(wù)問題,做好平臺建設(shè)。
- 增強型數(shù)據(jù)治理
目前大部分是基于統(tǒng)計類規(guī)則,正在建設(shè)部分挖掘類規(guī)則。
后續(xù)會在智能化模型建設(shè)方面,做一些預(yù)測分析。































