來看看位元組跳動內部的資料血緣用例與設計

2022-09-23 21:27:22 字數 2936 閱讀 9670

資料血緣描述了資料的**和去向,以及資料在多個處理過程中的轉換。資料血緣是組織內使資料發揮價值的重要基礎能力。本文從位元組的資料鏈路概況開始,介紹了資料血緣在位元組的應用場景,總體設計,資料模型以及衡量指標。

文 | 羅小亮、拾捌、大濱來自位元組跳動資料平台開發套件團隊

為了明確問題的討論範圍,我們首先介紹一下位元組的資料鏈路。

mq 中的資料,在 mq 之間有分流的過程,做轉換格式,流量拆分等。

脫機數倉的核心是 hive,資料通過各種手段最終匯入其中,使用主流的 hivesql 或 sparkjob 做業務處理,流入下游 clickhouse 等其他儲存。

實時數倉的核心是 mq,使用主流的 flinksql 或通用 flinkjob 做處理,期間與各種儲存做 sidejoin 豐富資料,最終寫入各種儲存。

典型的資料出口有三類:

在位元組,資料血緣的系統邊界是:從 rds 和 mq 開始,一路途徑各種計算和儲存,最終匯入指標、報表和資料服務系統。

在討論技術細節之前,需要先講清楚血緣的應用場景與業務價值,進一步明確資料血緣需要解決的問題。不同的應用場景,對於血緣資料的消費方式,血緣的覆蓋範圍,血緣的質量訴求,都會有所差別。

01 - 概覽

通過對位元組血緣鏈路和應用場景的討論,可以總結出血緣整體設計時需要考慮的兩個關鍵點:

位元組資料血緣系統的整體架構可以分為三部分:

02 - 任務接入

有兩個關鍵的設計考慮:

提供兩種可選的鏈路,以應對不同下游系統對於資料實時性的不同要求:

定義統一的 task 模型,並通過 tasktype 來區分不同型別任務,確保後續處理的可擴充套件性:

03 - 血緣解析

有兩個關鍵的設計考慮:

定義統一的血緣資料模型 lineageinfo

針對不同的 tasktype,靈活定製不同的解析實現,也支援不同 tasktype 可服用的兜底解析策略。比如:

04 - 資料匯出

血緣解析所產出的 lineageinfo,會首先送入 datacatalog 系統,支援三種整合方式:

血緣資料模型的定義,是確保系統可擴充套件性和方便下游消費整合的關鍵設計之一。

01 -概覽

我們以圖的資料模型來建模整套血緣系統。圖中包含兩類節點和兩類邊:

將任務節點和資料節點統一到一張圖上的 2 點優勢:

02 - 字段(column)級血緣

字段血緣是血緣模型中的邊界情況,單獨拿出來簡單討論。在實現時,有兩種可供選擇的思路:

我們最終採用了第 2 種方案。

實際推廣血緣時,最常被使用者問到的問題就是,血緣質量怎麼樣,他們的場景能不能用。面對這種靈魂拷問,每個使用者都單獨評估一遍的開銷過大,所以我們花了很多精力討論探索出了最常用的三個技術指標,以佐證血緣質量。使用者可以根據這些指標,判斷自己的場景是否適用。

01 - 準確率

定義:假設乙個任務實際的輸入和產出與血緣中該任務的上游和下游相符,既不缺失也不多餘,則認為這個任務的血緣是準確的,血緣準確的任務佔全量任務的比例即為血緣準確率。

準確率是使用者最關注的指標,像資料開發的影響分析場景,血緣的缺失有可能會造成重要任務沒有被通知,造成線上事故。

不同型別的任務,血緣解析的邏輯不同,計算準確率的邏輯也有區別:

注意乙個問題,上面所講的準確率計算,轉化的時候都有乙個前提假設,是程式按照我們假定的方式執行,實際情況並不一定總是這樣。其實這件事情沒必要特別糾結,血緣就像我們在執行的其他程式一樣,都可能因程式 bug,環境配置,邊界輸入等,產生不符合預期的結果。

作為準確率的補充,我們在實踐中通過三種途徑,盡早發現有問題的血緣:

02 - 覆蓋率

血緣覆蓋率是比較粗粒度的指標。作為準確率的補充,使用者通過覆蓋率可以知道當前已經支援的資產型別和任務型別,以及每種覆蓋的範圍。

在內部,我們定義覆蓋率指標的目的有兩個,一是圈定出我們比較關注的資產集合,二是尋找系統中缺失的整塊的任務型別。

以 hive 表為例,位元組生產環境的 hive 表已經達到了幾十萬級別,其中有很大一部分,是不會被長期使用與關注的。計算血緣覆蓋率時,我們會根據規則圈選出其中的部分,比如,過去 7 天有資料寫入的,作為分母,在這之上,看血緣覆蓋率是多少。

當血緣覆蓋率低時,通常說明我們漏掉了某種任務型別或者圈選的資產範圍不合理。舉個例子,在初期時,我們發現 mq 的血緣覆蓋率只有個位數,分析後發現,我們漏掉了以另外一種格式定義的流式資料整合任務。

03 - 時效性

定義:從任務發生修改,到最終反應到血緣儲存系統的端到端延時。

對於一些使用者場景來說,血緣的時效性並沒有特別重要,屬於加分項,但是有一些場景是強依賴。不同任務型別的時效性會有差異。

資料開發領域的影響分析場景,是對血緣實時性要求很高的場景之一。使用者在圈定修改的影響範圍時,如果只能拉取到昨天為止的狀態,是會產生嚴重業務事故的。

提公升時效性的瓶頸,通常不在血緣服務方,而是任務管理系統是否可以近實時的將任務相關的修改,以通知形式傳送出來。

文中闡述的部分資料血緣技術已經通過火山引擎大資料研發治理套件 dataleap 對外開放。

接下來,位元組跳動資料平台在資料血緣方面的工作,會主要集中在三個方向:

相關產品

火山引擎大資料研發治理套件dataleap

一站式資料中臺套件,幫助使用者快速完成資料整合、開發、運維、治理、資產、安全等全套資料中臺建設,幫助資料團隊有效的降低工作成本和資料維護成本、挖掘資料價值、為企業決策提供資料支撐。

用React的Web前端的進來看看

招人貼,base 南京,簡歷投遞 lengying ivtime.com web前端開發工程師 職位描述 1.負責公司網頁產品及手機 的前端開發 2.負責公司單頁應用產品的前端開發工作 3.根據產品需求,分析並給出最優的頁面前端結構解決方案 4.參與設計並編寫 web前端元件等。職位要求 1.三年及...

貝葉斯公式設b 用貝葉斯來看看拋硬幣的概率

為什麼選擇 重述貝葉斯思想 拋硬幣問題的多情況分析 總結本節詳細介紹 的原因。1.分布 函式的定義 其中 對於等式兩邊各除以 以字母p代替x,得 選擇積分項作為 的分布函式,由積分項可知 分布已完成標準化 總積分等於1 因此,分布 分布的期望和方差 如何理解beta分布?beta 分布歸一化的證明 ...

大夥幫我一起來看看這個資料庫的題目

用sql plus產生以下報表.1.使用表emp,dept 2.寫成乙個可以用在sql plus中執行的script 使用sqlplus的column等定義 3.format 部門名稱 人數 工資總額 a 2 1000 b 3 2000 sum 3000 下面是我做的 select nvl b.de...