資料湖是下一代資料倉庫嗎?
Aberdeen 的一項調查表明,實施資料湖的組織比同類公司在有機收入增長方面高出 9%。這些領導者能夠進行新型別的分析,例如通過日誌檔案、來自點選流的資料、社交媒體以及儲存在資料湖中的網際網路連線裝置等進行機器學習。這有助於他們通過吸引和留住客戶、提高生產力、主動維護裝置以及做出明智的決策來更快地識別和應對業務增長機會。
一、資料湖的定義
資料湖(Data Lake)是一個以原始格式儲存資料的儲存庫或系統。它按原樣儲存資料,而無需事先對資料進行結構化處理。一個數據湖可以儲存結構化資料(如關係型資料庫中的表),半結構化資料(如CSV、日誌、XML、JSON),非結構化資料(如電子郵件、文件、PDF)和二進位制資料(如圖形、音訊、視訊),並執行不同型別的分析從控制面板和視覺化到大資料處理、實時分析和機器學習,以指導做出更好的決策。
二、資料湖的架構
三、資料湖的核心能力
3.1資料整合
-
接入不同資料來源,包括結構化資料(關係型或者非關係型資料庫的表)、半結構化資料(csv、json、文件等)、非結構化資料、資料流、ETL工具(Kafka、Logstash、DataX等)轉換後的資料、應用API獲取的資料(如日誌等);
-
自動生成元資料資訊,確保進入資料湖的資料都有元資料;
-
提供統一的接入方式,如統一的API或者介面;
3.2資料儲存
資料湖儲存的資料量巨大且來源多樣,資料湖應該支援異構和多樣的儲存,如HDFS、HBase、Hive等,儲存原始格式的資料;
3.3資料搜尋
資料湖中擁有海量的資料,對於使用者來說,明確知道資料湖中資料的位置,快速的查詢到資料,是一個非常重要的功能。
3.4資料治理
-
自動提取元資料資訊,並統一儲存;
-
對元資料進標籤和分類,建立統一的資料目錄;
-
建立資料血緣圖譜,梳理上下游的脈絡關係,有助於資料問題定位分析、資料變更影響範圍評估、資料價值評估;
-
資料版本管理,便於回溯與分析。
3.5資料質量
-
對於接入的資料質量管控,提供資料欄位校驗、資料完整性分析等功能;
-
監控資料處理任務,避免未執行完成任務生成不完備資料;
-
配置資料執行完成校驗,防止資料量發生突變,資料空值較多等。
3.6安全管控
對資料的使用許可權進行管控,對敏感資料進行脫敏或加密處理,也是資料湖能商用所必須具備的能力。
3.7自助資料發現
提供一系列資料分析工具,便於使用者對資料湖的資料進行自助資料發現,包括:
-
聯合分析;
-
互動式大資料SQL分析;
-
機器學習;
-
BI報表;
-
支援對流、NoSQL、圖等多種儲存庫的聯合分析能力
-
...
四、資料湖的生命週期
五、資料湖與資料倉庫的區別
資料倉庫是一個優化的資料庫,用於分析來自事務系統和業務線應用程式的關係資料。事先定義資料結構和 Schema 以優化快速 SQL 查詢,其中結果通常用於操作報告和分析。資料經過了清理、豐富和轉換,因此可以充當使用者可信任的“單一資訊源”。
資料湖儲存來自業務線應用程式的關係資料,以及來自移動應用程式、IoT 裝置和社交媒體的非關係資料。捕獲資料時,未定義資料結構或 Schema。這意味著您可以儲存所有資料,而不需要精心設計也無需知道將來您可能需要哪些問題的答案。您可以對資料使用不同型別的分析(如 SQL 查詢、大資料分析、全文搜尋、實時分析和機器學習)來獲得見解。
資料湖 |
資料倉庫 | |
---|---|---|
資料 |
來自 IoT 裝置、網站、移動應用程式、社交媒體和企業應用程式的非關係和關係資料 |
來自事務系統、運營資料庫和業務線應用程式的關係資料 |
Schema |
寫入在分析時(讀取型 Schema) |
設計在資料倉庫實施之前(寫入型 Schema) |
價效比 |
更快查詢結果只需較低儲存成本 |
更快查詢結果會帶來較高儲存成本 |
資料質量 |
任何可以或無法進行監管的資料(例如原始資料) |
可作為重要事實依據的高度監管資料 |
使用者 |
資料科學家、資料開發人員和業務分析師(使用監管資料) |
業務分析師 |
分析 |
機器學習、預測分析、資料發現和分析 |
批處理報告、BI 和視覺化 |
六、資料湖的價值
能夠在更短的時間內從更多來源利用更多資料,並使使用者能夠以不同方式協同處理和分析資料,從而做出更好、更快的決策。
七、資料湖的挑戰
資料湖架構的主要挑戰是儲存原始資料而不監督內容。對於使資料可用的資料湖,它需要有定義的機制來編目和保護資料。沒有這些元素,就無法找到或信任資料,從而導致“資料沼澤”的出現。滿足更廣泛受眾的需求需要資料湖具有管理、語義一致性和訪問控制。
八、資料湖的開源平臺和元件
三大開源的資料湖專案Delta Lake、Iceberg 和 Hudi 。商業資料湖平臺有zaloni、Azure、Amazon、阿里雲等。
8.1Delta Lake
Delta Lake是Databricks公司開源的一個專案。它基於自家的Spark,為資料湖提供支援ACID事務的資料儲存層。主要功能包括:支援ACID事務、元資料處理、資料歷史版本、Schema增強等。
8.2Iceberg
Netflix的資料湖原先是藉助Hive來構建,但發現Hive在設計上的諸多缺陷之後,開始轉為自研Iceberg,並最終演化成Apache下一個高度抽象通用的開源資料湖方案。
8.3Hudi
Apache Hudi是由Uber的工程師為滿足其內部資料分析的需求而設計的資料湖專案,它提供的fast upsert/delete以及compaction等功能可以說是精準命中廣大人民群眾的痛點,加上專案各成員積極地社群建設,包括技術細節分享、國內社群推廣等等。
九、總結
資料湖在概念層還是有些模糊、混亂,缺少一系列標準化的、完善的定義。在實現方面也不是很成熟,缺少豐富的工具和生態圈。現階段還在演變發展過程中,目前也能解決一些大資料問題。
十、參考文獻
-
https://zhuanlan.zhihu.com/p/87795611
-
https://aws.amazon.com/cn/big-data/datalakes-and-analytics/what-is-a-data-lake/
-
https://www.jianshu.com/p/dc510ec49f53