初探數據湖(Data Lake),到底有什麼用?讓我們來一窺究竟...

一、前言

數據湖的概念最早是2011年提出來的,最初數據湖是數據倉庫的補充,是爲了解決數據倉庫漫長的開發週期,高昂的開發、維護成本,細節數據丟失等問題出現的。

數據湖大多是相對於傳統基於RDBMS的數據倉庫,而從2011年前後,也就是數據湖概念出現的時候,很多數據倉庫逐漸遷移到以Hadoop爲基礎的技術棧上,而且除了結構化數據,半結構化、非結構數據也逐漸的存儲到數據倉庫中,並提供此類服務。這樣的數據倉庫,已經具有了數據湖的部分功能。

關於數據湖的定義,維基百科上是這樣講的:數據湖(Data Lake)是一個以原始格式存儲數據的存儲庫或系統。它按原樣存儲數據,而無需事先對數據進行結構化處理。一個數據湖可以存儲結構化數據(如關係型數據庫中的表),半結構化數據(如CSV、日誌、XML、JSON),非結構化數據(如電子郵件、文檔、PDF)和二進制數據(如圖形、音頻、視頻)。

但是隨着大數據技術的融合發展,數據湖不斷演變,彙集了各種技術,包括數據倉庫、實時和高速數據流技術、數據挖掘、深度學習、分佈式存儲和其他技術。逐漸發展成爲一個可以存儲所有結構化和非結構化任意規模數據,並可以運行不同類型的大數據工具,對數據進行大數據處理、實時分析和機器學習等操作的統一數據管理平臺。

二、現代數據架構

在這裏插入圖片描述

三、數據湖架構參考

結合目前開源的數據湖平臺和組件,總結數據湖的基本參考架構如下:

數據湖架構-流程

在這裏插入圖片描述

數據湖架構-集成

在這裏插入圖片描述

企業數據湖架構

在這裏插入圖片描述

數據湖最核心的能力

在這裏插入圖片描述

四、數據湖的作用

1、數據集成能力(數據接入)

1)接入不同數據源,包括數據庫中的表(關係型或者非關係型)、各種格式的文件(csv、json、文檔等)、數據流、ETL工具(Kafka、Logstash、DataX等)轉換後的數據、應用API獲取的數據(如日誌等);

2)自動生成元數據信息,確保進入數據湖的數據都有元數據;

3)提供統一的接入方式,如統一的API或者接口;

2、數據存儲

數據湖存儲的數據量巨大且來源多樣,數據湖應該支持異構和多樣的存儲,如HDFS、HBase、Hive等;

3、數據搜索

數據湖中擁有海量的數據,對於用戶來說,明確知道數據湖中數據的位置,快速的查找到數據,是一個非常重要的功能。

4、數據治理

1)自動提取元數據信息,並統一存儲;

2)對元數據進標籤和分類,建立統一的數據目錄;

3)建立數據血緣,梳理上下游的脈絡關係,有助於數據問題定位分析、數據變更影響範圍評估、數據價值評估;

4)跟蹤數據時間旅行,提供不同版本的數據,便於進行數據回溯和分析;

5、數據質量

1)對於接入的數據質量管控,提供數據字段校驗、數據完整性分析等功能;

2)監控數據處理任務,避免未執行完成任務生成不完備數據;

6、安全管控

1)對數據的使用權限進行監管;

2)對敏感數據進行脫敏和加密;

7、自助數據發現

提供一系列數據分析工具,便於用戶對數據湖的數據進行自助數據發現,包括:

聯合分析;
交互式大數據SQL分析;
機器學習
BI報表

五、數據湖與數據倉庫的區別

數據倉庫是一種具有正式架構的成熟的、安全的技術。它們存儲經過全面處理的結構化數據,以便完成數據治理流程。數據倉庫將數據組合爲一種聚合、摘要形式,以在企業範圍內使用,並在執行數據寫入操作時寫入元數據和模式定義。數據倉庫通常擁有固定的配置;它們是高度結構化的,因此不太靈活和敏捷。數據倉庫成本與在存儲前處理所有數據相關,而且大容量存儲的費用相對較高。

相比較而言,數據湖是較新的技術,擁有不斷演變的架構。它是一個集中式存儲庫,允許以任意規模存儲所有結構化和非結構化數據。根據定義,數據湖不會接受數據治理,但專家們都認爲良好的數據管理對預防數據湖轉變爲數據沼澤不可或缺。數據湖在數據讀取期間創建模式。與數據倉庫相比,數據湖缺乏結構性,而且更靈活;它們還提供了更高的敏捷性。在檢索數據之前無需執行任何處理,而且數據湖特意使用了便宜的存儲。

根據要求,典型的組織將需要數據倉庫和數據湖,因爲它們可滿足不同的需求和使用案例。

在這裏插入圖片描述
數據倉庫本質上其實就是一個優化的數據庫,用於分析來自事務系統和業務線應用程序的關係數據。事先定義數據結構和 Schema 以優化快速 SQL 查詢,其中結果通常用於操作報告和分析。數據經過了清理、豐富和轉換,因此可以充當用戶可信任的“單一信息源”。

數據湖有所不同,因爲它存儲來自業務線應用程序的關係數據,以及來自移動應用程序、IoT 設備和社交媒體的非關係數據。捕獲數據時,未定義數據結構或 Schema。這意味着您可以存儲所有數據,而不需要精心設計也無需知道將來您可能需要哪些問題的答案。可以對數據使用不同類型的分析(如 SQL 查詢、大數據分析、全文搜索、實時分析和機器學習)來獲得見解。

隨着使用數據倉庫的組織看到數據湖的優勢,他們正在改進其倉庫以包括數據湖,並啓用各種查詢功能、數據科學使用案例和用於發現新信息模型的高級功能。

總結:

1)數倉中保存的都是結構化處理後的數據,而數據湖中可以保存原始數據也可以保存結構化處理後的數據,保證用戶能獲取到各個階段的數據。因爲數據的價值跟不同的業務和用戶強相關,有可能對於A用戶沒有意義的數據,但是對於B用戶來說意義巨大,所以都需要保存在數據湖中。

2)數據湖能夠支持各種用戶使用,包括數據科學家這類專業的數據人員。

3) 數據倉庫的數據進入這個池之前是預先分類的,這可以指導其後面如何進行數據的分析。但在大數據時代,這些都是素材而已,你根本不知道以後如何用它,而數據湖給後面的數據分析帶來了更大的彈性。因此,這個放大數據的倉庫,專家建議叫數據湖,以區別於數據倉庫。

六、數據湖成熟度的劃分

  1. 第一級是在沒有用Hadoop之前,這個時候各個大型應用都有自己的數據庫,也有自己的數據倉庫來做數據分析。
  2. 第二級是企業引入了Hadoop。企業的應用數據和Hadoop有交互。
  3. 第三級是數據湖的成長期。新的系統直接支持Hadoop,Hadoop成爲缺省配置,而數據倉庫只在某些特定場景下使用,外部的數據也引入數據湖中。
  4. 第四階段就是數據湖和應用雲階段。Hadoop大量採用,並且加強其可靠性、安全性。

看來,近兩年數據湖是構造企業差異化競爭的很好思路,而Hadoop是目前流行的實現手段。

但是,之前爲什麼用Hadoop呢?因爲在當前,Hadoop是實現數據湖的最常用技術手段,但以後也許有更好的方式。也就是說,數據湖是一個概念,而Hadoop是實現這個概念的技術手段。

七、數據湖的優勢

  • 輕鬆地收集和攝入數據:企業中的所有數據源都可以送入數據湖中。因此,數據湖成爲了存儲在企業內部服務器或雲服務器中的結構化和非結構化數據的無縫訪問點。通過數據分析工具可以輕鬆地獲得整個無孤島的數據集合。此外,數據湖可以用多種文件格式存儲多種格式的數據,比如文本、音頻、視頻和圖像。這種靈活性簡化了舊有數據存儲的集成。
  • 支持實時數據源:數據湖支持對實時和高速數據流執行 ETL 功能,這有助於將來自 IoT 設備的傳感器數據與其他數據源一起融合到數據湖中。
  • 更快地準備數據:分析師和數據科學家不需要花時間直接訪問多個來源,可以更輕鬆地搜索、查找和訪問數據,這加速了數據準備和重用流程。數據湖還會跟蹤和確認數據血統,這有助於確保數據值得信任,還會快速生成可用於數據驅動的決策的 BI。
  • 更好的可擴展性和敏捷性:數據湖可以利用分佈式文件系統來存儲數據,因此具有很高的擴展能力。開源技術的使用還降低了存儲成本。數據湖的結構沒那麼嚴格,因此天生具有更高的靈活性,從而提高了敏捷性。數據科學家可以在數據湖內創建沙箱來開發和測試新的分析模型。
  • 具有人工智能的高級分析:訪問原始數據,創建沙箱的能力,以及重新配置的靈活性,這些使得數據湖成爲了一個快速開發和使用高級分析模型的強大平臺。數據湖非常適合使用機器學習和深度學習來執行各種任務,比如數據挖掘和數據分析,以及提取非結構化數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章