DataOps:現代數據管道的精髓
DataOps,即Data和Operations組合。是在數據分析過程中,提升數據質量,減少數據分析的周期時間,提高效率的一系列實踐,現在逐漸發展成了一門方法論。DataOps適用于從數據準備到報告的整個數據生命周期。
DataOps是一門快速發展的學科,用來管理不規則數據管道,這些數據管道遍布于各大公司的環境中。
曾幾何時有那么一段美好的日子,只有兩個數據管道:一個支持生成通用報告和分析活動的數據倉庫,以及一個為投資者和董事會提供審計數字的財務報告的數據管道。如今,隨著自助服務分析和機器學習的發展,公司擁有的管道數量隨著數據分析師,數據科學家和需要大量數據的應用程序的增多而增多。每一個都需要專門的數據集和數據訪問權限才能產生內容。這簡直是管道爆炸!
如果沒有DataOps,每個數據管道都將成為一個數據孤島,與其他數據管道,數據集和數據生產者幾乎沒有關系。沒有協作或重用,浪費大量的人工和返工,有大量的錯誤和數據缺陷,并且交付時間極慢。商業用戶除了信任自己的數據外不信任任何數據,而且許多用戶需要在沒有任何數據或沒有足夠數據的情況下做出決策,因為他們等不及了。
DevOps的降臨。在引入敏捷開發和DevOps技術之前,軟件工程界一直受到類似問題的困擾。如今,DevOps的先驅例如Amazon,Google和LinkedIn等公司每天(甚至每小時或更快)部署軟件版本,這是幾年前無法想象的發展節奏。令人驚訝的是,即使周期時間加快了,軟件錯誤和缺陷也有所減少。容器化和微服務的問世將進一步加速和強化軟件交付周期。簡而言之,DevOps可以以更低的成本更快地提供更好的代碼。
對于DataOps來說
數據挑戰。看到打破僵局的機會,數據世界正在緊緊抓住DevOps原則。 DevOps管理代碼,工具和基礎架構之間的聯系,以加快應用程序功能的交付,而DataOps添加了第四個元素——數據——比其他三個元素相加更難以控制!在每個管道中,必須對數據進行標識、捕獲、格式化、標記、驗證、畫像(profiled)、清理、轉換、組合、聚合、保護、分類、治理(governance)、移動、查詢、可視化、分析和操作。 嗚!隨著組織從數百個數據源收集大量數據,這些任務變得越來越復雜。
工具和人員。此外,每個任務還需要專門的工具管理。這些工具的范圍從傳統的ETL / ELT,數據質量和主數據管理工具到數據目錄,數據準備和數據治理產品,再到報告,數據可視化和數據科學工具。這些工具中的每一個針對不同類型的用戶——從IT部門的系統工程師和數據庫管理員——到BI團隊中的數據工程師,數據管理員和報表開發人員——到數據分析師,數據科學家和數據使用者業務部門。
協調所有的這些工具,技術和人員是一項巨大的工作,特別是在擁有規模龐大的開發團隊,來自數百個來源的大量數據以及該領域的大量數據分析師和數據科學家的大型組織中。這就是為什么DataOps會發展起來。
DataOps框架
定義DataOps非常困難。它包含很多零件和過程。圖1是試圖繪制DataOps環境的關鍵組件的簡化圖。為了簡化此環境,某些組織傾向于從單個供應商那里采購所有組件,例如大型軟件或云提供商(例如Microsoft,Amazon,Oracle或IBM)或大數據工程專家(例如Infoworks)。其他人則喜歡使用一些最佳組合,用編排和監控工具將開源的組件和商業組件結合在一起。
圖1 DataOps組件:
數據管道
圖1中間的黑色箭頭表示典型的數據管道,源數據通過管道逐步移動到三個階段(數據采集,數據工程和數據分析)。這些管道代表了一個數據供應鏈,這個數據供應鏈可以處理,優化和豐富數據,以供各種業務用戶和應用程序使用。一個管道可能會填充財務使用的OLAP多維數據集;另一個可能將集成的客戶數據傳遞到實時Web應用程序;另一個可能會為建立活動響應模型的數據科學家創建一個細分的原始數據池。
數據技術
數據管道下方是用于采集,精煉和分析數據的主要技術類別。媒體最關注這四個類別:數據捕獲,數據集成,數據準備和數據分析。因為這就是錢的來源——軟件供應商每年通過銷售數據產品產生數十億美元的收入!不幸的是,對數據技術的過分重視,使得更為重要的數據過程變得黯然失色,而數據過程則是協調和驅動這些數據技術的。 (請參見下面的“數據處理”。)
如今,隨著組織從批處理架構轉向流式架構以支持大數據和物聯網,數據捕獲已成為熱門技術類別。數據集成已成為傳統數據倉庫項目的基礎,現在已成為主流。數據準備是一項新技術,旨在幫助數據分析人員建模自己的數據集,理想地利用IT管理的存儲庫(例如數據湖)中的數據。 數據分析師通過為商業用戶提供查詢,分析,可視化和共享見解的工具來完成該數據周期。
團隊和交接。IT部門通過采集和集成數據來啟動數據供應鏈。這個數據通常被創建成通用的,面向主題的數據文件。然后,數據工程團隊將對數據進行查詢和建模,以滿足特定的業務需求和用例。最后,商業用戶查詢和分析目標數據集以創建報告,儀表板和預測模型。盡管本質上是線性的,但該循環還是有可能存在中間迭代,其中包含許多必須存儲,跟蹤和管理的中間步驟和文件。
數據存儲是支持數據技術和團隊的關鍵,其中包括在高性能列式數據庫上運行的數據倉庫,數據湖和數據沙箱。數據存儲下面是計算架構,越來越多的計算架構是基于云,虛擬化,彈性的以及大規模并行的。
數據處理
那些試圖僅僅依賴技術來構建和管理管道的組織注定要失敗。它不僅需要技術,還需要定義明確的過程和方法來構建、更改、測試、部署、運行以及跟蹤新功能和修改后的功能。它還需要管理這些過程生成的所有工件,包括代碼、數據、元數據、腳本、指標、維度、層次結構等。而且,它需要協調數據技術并供給數據以及監控開發,測試和生產過程。這需要作業調度,事件觸發器,錯誤處理和性能管理,以滿足服務級別協議。
開發和部署。前兩個階段(開發和部署)通過敏捷和DevOps方法得到了很好的定義。在這里的目標是和自治的、懂得業務的團隊一起開發新功能,這些團隊可以在短短的時間內(通常在兩周或更短的時間內)開發出經過全面測試和功能的代碼。為了同步開發,團隊將代碼存儲在應用版本控制的中央存儲庫中,以避免覆蓋和重復工作。他們還使用技術和工具無縫地合并代碼,并以最小的延遲將代碼移入生產環境(即,持續集成和持續部署CI/CD)。這些工具和系統配置集中存儲并維護在配置庫中。
有許多工具可以支持開發和部署的流程。你可以選擇從頭開始構建新的應用程序或用例,或者修改現有的用例。Git是一個很好的工具,它用于存儲代碼和控制版本,而Jenkins是支持CI/CD流程(即合并和部署代碼)的開源工具。在數據世界中,有許多針對特定類型管道的開發和部署工具,包括數據倉庫開發(即數據倉庫自動化工具)和創建機器學習模型。
編排。DataOps的核心和靈魂在于編排。在管道中移動,我們需要具有眾多依賴關系的復雜任務工作流來處理和豐富數據。一些著名的數據編排工具如Airflow,一些開源項目如,DataKitchen,StreamSets和Microsoft Azure的DataFactory。一個好的編排工具可以很好的協調數據開發項目的所有四個組成部分:代碼,數據,技術和基礎架構。在DevOps環境中,業務流程工具使用容器編排框架(例如Kubernetes)來激活和協調容器以支持這些流程(如開發、測試、staging和生產環境)。
在數據世界中,業務流程工具不僅提供了新的開發/測試/生產環境。它們還負責在管道中不同階段之間移動數據,并實例化對數據進行操作的數據工具。他們一邊工作,一邊監控進度,還要將錯誤歸納到合適的界面并發出警報。例如,在云環境中,DataOps編排工具可能會執行以下操作:
- 設置平臺(例如數據庫,存儲容量,訪問控制列表,性能管理工具,數據目錄,日志服務器和監視工具)。
- 觸發采集作業。監視作業(批處理或流式傳輸),檢測故障并從中恢復,監視容量并在需要時觸發自動縮放。
- 觸發數據質量作業。分析和驗證數據,檢查血緣。
- 快速啟動數據轉換。一旦采集的數據集獲得了通過健康檢查,編排工具可能會啟動轉換代碼來合并,格式化和聚合數據元素。
- 觸發BI工具。以將數據下載到其自己的列式存儲中,或發送一個通知,告知已準備好進行查詢和分析的新數據集。
- 監控工作流程。成功完成工作流程后,程序會向適當的人員發出通知,并釋放基礎架構。
- 持續測試和監控。 DataOps環境的最后組成部分是測試環境。理想情況下,團隊在開發任何代碼或功能之前就寫好了測試。然后,業務流程工具在管道中的每個階段之前和之后運行測試。在啟動和集成時,在上游捕獲錯誤和問題可以節省大量時間,金錢和麻煩。諸如Great Expectations和ICEDQ之類的工具就支持持續的測試環境。還有一些產品提供對工具,應用程序和基礎架構的持續監控,以確保最佳的正常運行時間和性能。 Unravel就是面向大數據處理的應用程序性能管理(APM)產品之一。
使用測試作為基本構建塊的開發團隊的要比那些不使用的團隊開發速度更快。對于大多數想在開始之前不進行測試的情況下潛入項目的開發人員來說,這起初是違反直覺的。但是一旦測試到位,開發人員就可以在發現難以解決的代碼之前迅速發現問題。通過持續的測試和監控,團隊可以設定性能目標,衡量輸出并不斷改善其周期時間和質量。
結論
DataOps的目標是為了使數據管道和應用程序的開發變得更加嚴謹,可重用和自動化。 DataOps可以幫助數據團隊從數據孤島,以及被積壓和無休止的質量控制問題纏身的狀況轉變為敏捷,自動化和加速的數據供應鏈,并且它能持續改善并為企業帶來價值。
譯者介紹 Grace,程序員,研究生畢業于SUNY at Stony Brook,目前供職于Linktime Cloud Company,對大數據技術以及數據可視化技術感興趣。