1. 程式人生 > 其它 >資料湖搭建指南——幾個核心問題

資料湖搭建指南——幾個核心問題

1、什麼是資料湖?

資料湖是一種技術系統,可以大批量並且廉價的分析結構化和非結構化資料資產。

其實很簡單,資料湖的最大魅力在於可以分析一切型別的資料。

自 2010 年首次提出“資料湖”一詞以來,採用資料湖架構的組織數量呈指數級增長。 它們支援多種分析功能,從資料的基本 SQL 查詢到實時分析,再到機器學習。

主要組成:

資料湖由四個主要元件組成:儲存層格式化層計算層元資料層

2、為什麼要使用資料湖?

資料湖架構將資料資產整合到一個集中的儲存庫中。該儲存庫將用作對以前孤立的資料進行跨功能分析的根基。此外,來自資料湖的架構有助於數字化驅動的實現。

任何擁有來自物聯網感測器或移動應用點選流等來源的大規模非結構化資料都可以採用資料湖架構,這也是未來大資料的發展方向之一。

資料湖與資料倉庫

資料湖和資料倉庫的相似之處在於它們都支援分析大型資料集。然而,他們實現這一目標的方法在幾個關鍵方面有所不同。

模組化:資料倉庫通常是專有的、單一的應用程式,比如使用HADOOP,HIVE等構建資料倉庫。而資料湖的特點是其元件的模組化,主要由開源技術和開放格式組成。

架構:資料倉庫要求資料在寫入或攝取時立即符合 DDL 定義的架構。相比之下,資料湖允許資料自由儲存,資料的結構驗證在讀取時進行。

成本與效能:資料倉庫通常以更高的價格提供高效能。使用者在將資料插入表之前通常會面臨歷史記錄的聚合,以避免過高的成本。

資料湖將資料儲存保持在極具成本效益的儲存服務中,因此不會產生過高儲存費用。計算資源可彈性伸縮,以最佳方式滿足工作負載的需求,無需額外成本。

結構化與非結構化資料:資料倉庫專為結構化表格資料集而設計。而資料湖也可用於分析非結構化或半結構化格式的資料。

事實上,資料湖與資料倉庫是可以並行的,要結合實際業務情況進行。

3、如何構建資料湖?

高度可用的儲存服務是資料湖的第一步。

在將資料轉換為更適合分析的格式之前,應以原始格式儲存資料。

接下來,連線諸如 Spark 或 Presto 之類的計算引擎以對資料執行計算。

總共分四部:

  1. 原始資料進入物件儲存
  2. 優化原始資料檔案以按大小和格式進行分析
  3. 新增元資料工具來定義模式並啟用版本控制 + 發現
  4. 將下游消費者整合到優化的資料資產中

4、資料湖技術路線

在資料湖的每一層架構中,都有許多技術可以組合起來建立資料湖。

儲存: 主要雲提供商 AWS S3的儲存服務最常用於資料湖的儲存層。還有許多其他託管和開源儲存提供商也完全能夠支援資料湖,包括:MinIO、HDFS、IBM 雲端儲存、阿里巴巴物件儲存、Wasabi、Ceph、Oracle 雲端儲存、SwiftStack ,和Spaces Object Storage。

資料格式:最簡單的格式示例是 CSV 和 JSON,基本都是支援的。還存在專為資料湖用例設計的更專業的格式,如 Parquet、Delta、Iceberg、Avro 和 Hudi。這些格式提高了湖操作的效率,並使事務原子性和時間回溯等功能成為可能。

媒體影象、視訊和音訊檔案相關的非結構化資料格式也常見於資料湖中。

計算:大型的計算引擎必須是分散式的。示例包括 MapReduce 和 Hadoop 等技術、以及 Spark 、Presto、Flink 等等。

元資料:非常的重要,特別是影響到以後的資料治理。

客戶端和庫:通過 JDBC/ODBC 和其他資料傳輸介面,可以訪問湖中資料。S3 API,BI 工具和 SQL 客戶端。

5、應用

資料湖適用於一切分析的場景。

  • 本地資料分析:一旦將資料放入湖中,就無需將其移至其他地方以進行基於 SQL 的分析。讓分析師對資料湖資料執行查詢,以識別趨勢並計算有關業務的指標。
  • 機器學習模型訓練:機器學習模型通常需要大量資料來訓練以優化其引數,並實現高水平的準確性。資料湖使資料科學家可以重複建立訓練和測試集以優化模型。
  • 存檔和歷史資料儲存:除了資料湖提供的直接業務價值外,還可以將它們用作存檔歷史資料的儲存。

6、資料湖的挑戰

資料湖周圍的生態系統相對較新,在某些情況下使用的技術仍在成熟中。因此,資料湖容易面臨一些常見問題。

小檔案:一個這樣的問題是“小檔案問題”,當大量檔案(每個檔案包含少量資料)出現在資料湖中時就會發生。小檔案的問題是它們執行計算和保持最新的元資料統計資料效率低下。

小檔案問題的解決方案是執行定期維護作業,將資料壓縮到理想大小以進行有效分析。

分割槽 和查詢效率:類似於在倉庫表上新增索引的概念,資料湖資產可以通過使用分割槽來優化聚合或過濾某些欄位。分割槽是指按 Blob 儲存上的特定欄位或欄位集對資料進行物理組織。

在沒有意識到這一點的情況下,使用者可能會因執行不太適合表分割槽結構的查詢而招致大量成本和等待時間。

共享驅動器:如果沒有適當的工作流程和治理,資料湖很容易類似於共享資料夾,多人在其中放置檔案,而無需考慮其他使用者的預期要求。適當的工作流程是必要的,以避免湖成為資料沼澤。

7、如何避免資料沼澤

資料沼澤是資料湖的退化狀態。湖中的表要麼返回不準確的資料,要麼檔案損壞並且查詢完全停止執行。

必須保持對插入生產資料集的任何資料的質量和屬性有充分的認識。

更多資料湖相關技術與方案分享,歡迎關注 大資料流動

相關技術交流群已經成立,歡迎大家掃碼加入

大資料流動 專注於大資料實時計算,資料治理,資料視覺化等技術分享與實踐。 請在後臺回覆關鍵字下載相關資料。相關學習交流群已經成立,歡迎加入~