《聯易融 孫朝和-DataOps中的數據可觀測性實踐_0628.pdf》由會員分享,可在線閱讀,更多相關《聯易融 孫朝和-DataOps中的數據可觀測性實踐_0628.pdf(42頁珍藏版)》請在三個皮匠報告上搜索。
1、DataOpsDataOps中的數據可觀測性中的數據可觀測性實踐實踐孫朝和孫朝和 大數據技術大數據技術專家專家個人介紹 聯易融數科 大數據技術專家 Apache DolphinScheduler Committer Datavane 大數據開源社區創始成員 Datavines 數據可觀測性開源項目作者目錄 01DataOps和數據可觀測性介紹 02案例背景和技術方案 03關鍵實踐 04下一步展望01DataOps和數據可觀測性介紹DataOps 介紹維基百科的定義是:一種面向流程的自動化方法,由分析和數據團隊使用,旨在提高數據分析的質量并縮短數據分析的周期。DataOps 的定義以后可能會變化
2、,但其關鍵目標非常明確:提高數據分析的質量并縮短數據分析的周期。什么是數據可觀測性?數據可觀測性是指組織對其系統內數據的健康狀況和性能的全面了解。從本質上講,數據可觀測性涵蓋一系列流程和技術,結合使用這些流程和技術后,您可以近乎實時地識別、排除故障和解決數據問題。數據可觀測性工具通過自動監控、原因分析、數據血緣和數據健康洞察來主動監測、解決和防止數據異常。這種方法可以帶來更健康的數據管道、更高的團隊生產力、更好的數據管理,并最終提高用戶滿意度。數據分布數據分布數據可觀測性數據可觀測性數據數據量量新鮮度新鮮度變更信息變更信息數據數據血緣血緣02案例背景和技術方案數據可觀測性解決我們什么問題?工具
3、太多,沒有統一平臺進行工作流監控、數據集情況和日志分析等,缺少統一視圖。缺少統一視圖缺少統一視圖缺少多維度的信息來幫助開發者解決問題數據問題解決難度大數據問題解決難度大數據可觀測性體系數據可觀測性是一套體系和方法論。這套體系由數據概況(DataProfile)、數據質量(DataQuality)、數據血緣(DataLineage)、數據管道監控(PipelineMonitor)和告警服務(Notification)五個核心組件構成。數據概況數據質量數據血緣數據管道監控告警服務數據目錄管理、數據分布查詢、變更信息監控等數據質量管理、數據比對校驗等數據集和數據集、數據集和任務的血緣關系工作流和任務
4、監控、錯誤管理統一告警服務開源方案調研圍繞這 5 個核心組件我們進行了開源方案的調研,針對不同的組件找到相應的開源項目datahubopenmetadatagreat_expectationsgriffincompass無需使用開源數據概況數據質量數據血緣數據管道監控告警服務datahubatlasopenmetadata 開源方案的問題單項解決單項解決不構成體系不構成體系融合和二開難度大融合和二開難度大幾個開源項目都能在某些方面解決問題,但是并不能解決所有問題。它們都是元數據管理、數據質量管理領域優秀的項目,但是想要構成完整的數據可觀測性體系仍然不夠?;谄渲幸粋€開源項目融合其他項目或者根據
5、需求進行二開的難度大。我們的解決方案建設數據質量管理體系,實現數據質量檢查、數據比對校驗和問題管理以 DolphinScheduler 為核心打造數據管道底座建設數據管道監控和告警建設數據源管理、元數據管理的統一中心數據管道底座數據源中心數據質量中心數據管道監控統一告警03關鍵實踐整體架構設計DolphinScheduler 介紹DolphinScheduler分布式和可擴展的開源工作流協調平臺 可靠性高去中心化的多 Master 和多Worker 服務架構簡單易用 工作流的創建、監控都是可視化,支持API方式集成豐富的使用場景支持多租戶和多種任務類型高擴展性支持自定義任務類型,Master和
6、Worker支持動態上下線DolphinScheduler 優化DolphinScheduler分布式和可擴展的開源工作流協調平臺 優化常用任務類型提升DataX、Sqoop、HiveCli和SQL等任務類型的易用性開發 Listener 機制 工作流和任務的相關事件推送數據源改造接入統一數據源中心數據源中心的痛點數據源管理分散數據源管理分散每個工具平臺都有自己的數據源管理,重復管理,沒有統一的數據源管理中心缺少數據探查工具缺少數據探查工具缺少數據概況查詢和數據分布查詢等功能數據源中心核心功能數據源管理數據源管理元數據管理元數據管理數據概覽數據概覽 采用插件化設計,內置常用多數據源類型支持數據
7、目錄查看、標簽管理、血緣管理、數據源結構變更信息的監聽支持數據表的數據概覽和數據分布查詢打造數據源中心-架構設計數據源管理參考 DolphinScheduler 數據源的插件化設計兼容 DolphinScheduler 數據源接口元數據管理元數據的集成內置元數據拉取功能提供元數據推送接口元數據的存儲和管理打造數據源中心-元數據集成設計IntegrationServer 是負責元數據集成的組件,支持水平擴展支持 Push 和 Pull 兩種模式的更新Push 模式主要是通過MetaDataFetchManager 內部維護拉取任務的調度,支持不同類型的數據源的元數據拉取,構造CatalogSch
8、emaChange進行更新Pull 模式主要是提供 RestApi 接口讓第三方系統將變更記錄推送數據源中新進行更新。打造數據源中心-元數據模型設計實體定義:CatalogEntityDefinition實體定義主要是定義不同的數據源類型所特有的字段實體實例:CatalogEntityInstance實體實例里面主要定義了具體的元數據實體所共有的字段,包括GUID、TYPE、DATASOURCE_CODE、FULL_QUALIFY_NAME、DISPLAY_NAME、OWNER、PROPERTIES(以JSON格式存儲實體特有屬性)等參考當前主流的元數據管理模型設計,并進行簡化實體實例關聯關系
9、:CatalogEntityInstanceRel實體實例關聯關系主要定義了實體實例1 GUID、實體實例2 GUID 以及它們之間的關系 PARENT、CHILD、UPSTREAM 和 DOWNSTREAM等實體標簽:CatalogTagCategory、CatalogTag變更記錄設計:CatalogSchemaChange數據質量中心的痛點場景不同引擎不同場景不同引擎不同能獨立運行和集成工作流能獨立運行和集成工作流能支持多種檢查能支持多種檢查需求需求不同場景的需求使用的引擎不一致,要盡可能地優化資源的使用,并且后續切換引擎時無需改配置或者盡量少修改配置。需要能夠獨立運行數據質量檢查作業和
10、數據比對作業,也要能發布到工作流中去執行,在必要的時候進行工作流阻斷。能夠支持數據質量檢查,數據比對校驗和質量問題管理數據質量中心-架構設計去中心化設計Coordinator 和 Executor 都是去中心化設計,支持水平擴展提升性能多引擎設計Spark 引擎 Local 引擎(基于JDBC實現)通常是用來執行數據探查和概覽報告多執行模式設計本地執行集成至 DolphinScheduler 工作流數據質量中心-多引擎設計多引擎設計的核心在于將數據質量檢查作業實際執行流程拆解為 Source、Transform 和 Sink 三個組件,由 Execution 去編排整個作業運行流程,由 Sou
11、rce 組件與數據源建立連接,通過 Transform 組件進行實際值、期望值、錯誤數據等語句的執行,最后由 Sink 組件將實際值、錯誤數據和檢查結果寫入到對應的引擎里面。數據質量中心-配置文件構造流程配置文件是數據質量檢查作業的核心內容,也是實現一次配置多引擎執行的關鍵。它定義整個檢查作業從哪里讀數據,怎么計算得到實際值、期望值和錯誤數據以及檢查結果和錯誤數據寫到哪里的流程和相關參數。數據質量中心-離線檢查執行流程CoordinatorJobScheduler 獲取待執行的作業信息,根據配置構造成相應類型的檢查作業參數JobDispatcher 進行作業的分發,分發至合適的 Executo
12、r 上執行ExecutorExecutor 接收到作業參數以后構造 JobRunner,根據配置選擇合適的執行引擎后運行Executor 執行完作業以后將結果信息返回給 Coordinator離線質量檢查流程如下:數據質量中心-數據比對場景數據遷移驗證數據遷移驗證數據同步驗證數據同步驗證數據管道調試數據管道調試驗證在執行關鍵數據遷移時是否復制了所有數據,跨數據源進行全量數據比對。驗證在數據傳輸過程中是否丟失數據,是否存在錯誤等。比如在業務數據同步至 ods 層以后,進行數據的比對(針對重要業務場景)數據管道出現錯誤時針對中間多層數據存儲進行調試和驗證數據質量中心-數據比對校驗實現將數據切分成較
13、小的塊,將這個數據塊里面的數據拼接后進行 MD5 轉成短的固定的值。如果兩個數據塊的 checksum 值相同,那么就證明兩個數據塊里面的數據是相同。如果 checksum 值不同,則將數據塊切分成更小的數據塊再進行 MD5,直到找到不同的數據行。針對不同的數據源編寫不同的 checksum 語句針對不同字段類型進行格式的標準化CheckSum 算法實現數據質量中心-質量問題管理質量問題告警和入庫質量問題好壞標注優化告警邏輯所有數據質量檢查問題都會落庫進行管理,用于復盤。數據質量檢查問題會提供 好/壞 的按鈕進行標注?;谟脩魧ΜF有問題的標注梳理規則,降低無效告警。數據管道監控的痛點缺少影響缺
14、少影響分析分析缺少缺少作業性能作業性能分析分析工作流中的任務沒有跟數據集建立關聯關系,無法快速根據任務找到受影響的數據集缺少對作業性能進行根因分析、提供優化建議和錯誤日志提取數據管道監控DolphinScheduler Listener為 DolphinScheduler 開發 Listener 組件,用于推送項目、工作流、任務的創建、更新、刪除以及執行實例的事件。開發 KafkaListenrer 支持將消息推送至 Kafka 中,由消費端進行事件消費。數據管道監控數據管道監控服務服務數據管道監控服務獲取 DolphinScheduler 的各種事件信息后會存儲工作流/任務的執行狀態和其他詳
15、細信息,解析任務腳本構造工作流-任務-數據集、數據集-數據集的血緣關系等。數據管道監控-架構設計數據管道監控是通過實時監聽工作流和任務的運行狀態、日志情況以及它里面任務所關聯的數據集的情況,來主動檢測數據管道問題,同時提供多維度的信息來幫助工程師提高解決問題的速度。數據管道監控-Listener設計和實現改造 AlertServer增加事件接收接口內部增加 EventBus 用于事件的轉發增加 KafkaListener,用于將數據發送至 KafkaMasterServer 和 ApiServer 通過 Rpc的方式將事件發送到 AlertServerListener 的設計核心如下:數據管道
16、監控-血緣解析任務腳本解析針對多種任務類型進行腳本的解析,構造 Dag-Task-Dataset的關系基于 Dag-Task-Dataset 在任務失敗時快速找出影響的任務和數據集在任務里面可快速查看關聯的數據集的數據概況等信息?;谌蝿漳_本的血緣解析:數據管道監控-血緣解析血緣解析流程:針對不同的任務類型(Sqoop、DataX、HiveCli和SQL等)開發不同的 ScriptParser 解析獲得輸入表和輸出表,將輸入表和輸出表的關系存儲到引擎中。數據管道監控-Hive腳本解析解析流程:根據分隔符將腳本進行切分成多條 SQL 語句;繼承 Calcite 的 SqlBasicVisitor
17、 實現對 SQL 語句進行解析,包括 CreateTable、Insert、Update 等語句;得到每條 SQL 語句的輸入表和輸出表;根據唯一限定名到庫里面查找表的GUID,插入或者更新實體間的關系數據管道監控-任務關聯詳情任務關聯數據集創建任務時可勾選是否記錄數據集的概況,PiplelineMonitor會去執行數據集的概覽作業日志的拉取和解析針對 Spark 任務獲取 Event 信息進行應用的性能分析提取任務日志中的錯誤日志統一告警支持郵件、短信等告警通道,支持告警分組管理。04下一步展望下一步展望除了對 Spark 應用進行錯誤和性能分析之外,暫無對其他任務類型進行分析實時場景較少
18、,缺乏實時場景上的可觀測性實踐血緣解析方面只支持較少的常用的任務類型機器學習(ML)功能,實現自動化的數據質量規則匹配和檢查擴展對實時場景下的數據可觀測性實踐,支持 Flink 引擎進一步擴展數據血緣的支持類型增加其他應用類型的性能和錯誤分析做得不好的做得不好的地方地方下一步下一步計劃計劃感謝聆聽!了解更多技術實踐案例了解更多技術實踐案例麥思博(msup)有限公司是一家面向技術型企業的培訓咨詢機構,攜手2000余位中外客座導師,服務于技術團隊的能力提升、軟件工程效能和產品創新迭代,超過3000余家企業續約學習,是科技領域占有率第1的客座導師品牌,msup以整合全球領先經驗實踐為己任,為中國產業快速發展提供智庫。高可用架構主要關注互聯網架構及高可用、可擴展及高性能領域的知識傳播。訂閱用戶覆蓋主流互聯網及軟件領域系統架構技術從業人員。高可用架構系列社群是一個社區組織,其精神是“分享+交流”,提倡社區的人人參與,同時從社區獲得高質量的內容。