1纹安、什么是數(shù)據(jù)湖?
數(shù)據(jù)湖是一種技術(shù)系統(tǒng)考余,可以大批量并且廉價的分析結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)資產(chǎn)先嬉。
其實很簡單,數(shù)據(jù)湖的最大魅力在于可以分析一切類型的數(shù)據(jù)楚堤。
自 2010 年首次提出“數(shù)據(jù)湖”一詞以來疫蔓,采用數(shù)據(jù)湖架構(gòu)的組織數(shù)量呈指數(shù)級增長。 它們支持多種分析功能身冬,從數(shù)據(jù)的基本 SQL 查詢到實時分析鳄袍,再到機器學習。
主要組成:
數(shù)據(jù)湖由四個主要組件組成:存儲層吏恭、格式化層、計算層和元數(shù)據(jù)層重罪。
2樱哼、為什么要使用數(shù)據(jù)湖哀九?
數(shù)據(jù)湖架構(gòu)將數(shù)據(jù)資產(chǎn)整合到一個集中的存儲庫中。該存儲庫將用作對以前孤立的數(shù)據(jù)進行跨功能分析的根基搅幅。此外阅束,來自數(shù)據(jù)湖的架構(gòu)有助于數(shù)字化驅(qū)動的實現(xiàn)。
任何擁有來自物聯(lián)網(wǎng)傳感器或移動應(yīng)用點擊流等來源的大規(guī)模非結(jié)構(gòu)化數(shù)據(jù)都可以采用數(shù)據(jù)湖架構(gòu)茄唐,這也是未來大數(shù)據(jù)的發(fā)展方向之一息裸。
數(shù)據(jù)湖與數(shù)據(jù)倉庫
數(shù)據(jù)湖和數(shù)據(jù)倉庫的相似之處在于它們都支持分析大型數(shù)據(jù)集。然而沪编,他們實現(xiàn)這一目標的方法在幾個關(guān)鍵方面有所不同呼盆。
模塊化:數(shù)據(jù)倉庫通常是專有的、單一的應(yīng)用程序蚁廓,比如使用HADOOP访圃,HIVE等構(gòu)建數(shù)據(jù)倉庫。而數(shù)據(jù)湖的特點是其組件的模塊化相嵌,主要由開源技術(shù)和開放格式組成腿时。
架構(gòu):數(shù)據(jù)倉庫要求數(shù)據(jù)在寫入或攝取時立即符合 DDL 定義的架構(gòu)。相比之下饭宾,數(shù)據(jù)湖允許數(shù)據(jù)自由存儲批糟,數(shù)據(jù)的結(jié)構(gòu)驗證在讀取時進行。
成本與性能:數(shù)據(jù)倉庫通常以更高的價格提供高性能看铆。用戶在將數(shù)據(jù)插入表之前通常會面臨歷史記錄的聚合徽鼎,以避免過高的成本。
數(shù)據(jù)湖將數(shù)據(jù)存儲保持在極具成本效益的存儲服務(wù)中性湿,因此不會產(chǎn)生過高存儲費用纬傲。計算資源可彈性伸縮,以最佳方式滿足工作負載的需求肤频,無需額外成本叹括。
結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù):數(shù)據(jù)倉庫專為結(jié)構(gòu)化表格數(shù)據(jù)集而設(shè)計。而數(shù)據(jù)湖也可用于分析非結(jié)構(gòu)化或半結(jié)構(gòu)化格式的數(shù)據(jù)宵荒。
事實上汁雷,數(shù)據(jù)湖與數(shù)據(jù)倉庫是可以并行的,要結(jié)合實際業(yè)務(wù)情況進行报咳。
3侠讯、如何構(gòu)建數(shù)據(jù)湖?
高度可用的存儲服務(wù)是數(shù)據(jù)湖的第一步暑刃。
在將數(shù)據(jù)轉(zhuǎn)換為更適合分析的格式之前厢漩,應(yīng)以原始格式存儲數(shù)據(jù)。
接下來岩臣,連接諸如 Spark 或 Presto 之類的計算引擎以對數(shù)據(jù)運行計算溜嗜。
總共分四部:
- 原始數(shù)據(jù)進入對象存儲
- 優(yōu)化原始數(shù)據(jù)文件以按大小和格式進行分析
- 添加元數(shù)據(jù)工具來定義模式并啟用版本控制 + 發(fā)現(xiàn)
- 將下游消費者集成到優(yōu)化的數(shù)據(jù)資產(chǎn)中
4宵膨、數(shù)據(jù)湖技術(shù)路線
在數(shù)據(jù)湖的每一層架構(gòu)中,都有許多技術(shù)可以組合起來創(chuàng)建數(shù)據(jù)湖炸宵。
存儲: 主要云提供商 AWS S3的存儲服務(wù)最常用于數(shù)據(jù)湖的存儲層辟躏。還有許多其他托管和開源存儲提供商也完全能夠支持數(shù)據(jù)湖,包括:MinIO土全、HDFS捎琐、IBM 云存儲、阿里巴巴對象存儲裹匙、Wasabi瑞凑、Ceph、Oracle 云存儲幻件、SwiftStack 拨黔,和Spaces Object Storage。
數(shù)據(jù)格式:最簡單的格式示例是 CSV 和 JSON绰沥,基本都是支持的篱蝇。還存在專為數(shù)據(jù)湖用例設(shè)計的更專業(yè)的格式,如 Parquet徽曲、Delta零截、Iceberg、Avro 和 Hudi秃臣。這些格式提高了湖操作的效率涧衙,并使事務(wù)原子性和時間回溯等功能成為可能。
媒體圖像奥此、視頻和音頻文件相關(guān)的非結(jié)構(gòu)化數(shù)據(jù)格式也常見于數(shù)據(jù)湖中弧哎。
計算:大型的計算引擎必須是分布式的。示例包括 MapReduce 和 Hadoop 等技術(shù)稚虎、以及 Spark 撤嫩、Presto、Flink 等等蠢终。
元數(shù)據(jù):非常的重要序攘,特別是影響到以后的數(shù)據(jù)治理。
客戶端和庫:通過 JDBC/ODBC 和其他數(shù)據(jù)傳輸接口寻拂,可以訪問湖中數(shù)據(jù)程奠。S3 API,BI 工具和 SQL 客戶端祭钉。
5瞄沙、應(yīng)用
數(shù)據(jù)湖適用于一切分析的場景。
- 本地數(shù)據(jù)分析:一旦將數(shù)據(jù)放入湖中,就無需將其移至其他地方以進行基于 SQL 的分析帕识。讓分析師對數(shù)據(jù)湖數(shù)據(jù)運行查詢泛粹,以識別趨勢并計算有關(guān)業(yè)務(wù)的指標。
- 機器學習模型訓練:機器學習模型通常需要大量數(shù)據(jù)來訓練以優(yōu)化其參數(shù)肮疗,并實現(xiàn)高水平的準確性。數(shù)據(jù)湖使數(shù)據(jù)科學家可以重復(fù)創(chuàng)建訓練和測試集以優(yōu)化模型扒接。
- 存檔和歷史數(shù)據(jù)存儲:除了數(shù)據(jù)湖提供的直接業(yè)務(wù)價值外伪货,還可以將它們用作存檔歷史數(shù)據(jù)的存儲。
6钾怔、數(shù)據(jù)湖的挑戰(zhàn)
數(shù)據(jù)湖周圍的生態(tài)系統(tǒng)相對較新碱呼,在某些情況下使用的技術(shù)仍在成熟中。因此宗侦,數(shù)據(jù)湖容易面臨一些常見問題愚臀。
小文件:一個這樣的問題是“小文件問題”,當大量文件(每個文件包含少量數(shù)據(jù))出現(xiàn)在數(shù)據(jù)湖中時就會發(fā)生矾利。小文件的問題是它們運行計算和保持最新的元數(shù)據(jù)統(tǒng)計數(shù)據(jù)效率低下姑裂。
小文件問題的解決方案是運行定期維護作業(yè),將數(shù)據(jù)壓縮到理想大小以進行有效分析男旗。
分區(qū) 和查詢效率:類似于在倉庫表上添加索引的概念舶斧,數(shù)據(jù)湖資產(chǎn)可以通過使用分區(qū)來優(yōu)化聚合或過濾某些字段。分區(qū)是指按 Blob 存儲上的特定字段或字段集對數(shù)據(jù)進行物理組織察皇。
在沒有意識到這一點的情況下茴厉,用戶可能會因運行不太適合表分區(qū)結(jié)構(gòu)的查詢而招致大量成本和等待時間。
共享驅(qū)動器:如果沒有適當?shù)墓ぷ髁鞒毯椭卫硎踩伲瑪?shù)據(jù)湖很容易類似于共享文件夾矾缓,多人在其中放置文件,而無需考慮其他用戶的預(yù)期要求稻爬。適當?shù)墓ぷ髁鞒淌潜匾氖任牛员苊夂蔀閿?shù)據(jù)沼澤。
7因篇、如何避免數(shù)據(jù)沼澤
數(shù)據(jù)沼澤是數(shù)據(jù)湖的退化狀態(tài)泞辐。湖中的表要么返回不準確的數(shù)據(jù),要么文件損壞并且查詢完全停止運行竞滓。
必須保持對插入生產(chǎn)數(shù)據(jù)集的任何數(shù)據(jù)的質(zhì)量和屬性有充分的認識咐吼。
更多數(shù)據(jù)湖相關(guān)技術(shù)與方案分享,歡迎關(guān)注 大數(shù)據(jù)流動
相關(guān)技術(shù)交流群已經(jīng)成立商佑,歡迎大家掃碼加入