什么是數(shù)據(jù)湖?用于大數(shù)據(jù)分析的大規(guī)??蓴U展存儲
譯文?譯者 | 李睿
審校 | 孫淑娟
2011年,時任商業(yè)智能開發(fā)商Pentaho公司首席技術(shù)官的James Dixon創(chuàng)造了“數(shù)據(jù)湖”這一術(shù)語。他將數(shù)據(jù)湖與當(dāng)時流行的數(shù)據(jù)集市的典型信息孤島進行了對比:如果將數(shù)據(jù)集市視為銷售瓶裝水的商店(經(jīng)過清潔和包裝處理以便于飲用),那么數(shù)據(jù)湖就是處于更自然狀態(tài)的大片水體。數(shù)據(jù)湖的內(nèi)容從一個源頭流入,填滿湖泊。采用數(shù)據(jù)湖,用戶可以來檢查、潛入或采集樣本。
從那時起,數(shù)據(jù)湖技術(shù)不斷發(fā)展,現(xiàn)在正在與數(shù)據(jù)倉庫爭奪大數(shù)據(jù)存儲和分析的市場份額。各種工具和產(chǎn)品支持數(shù)據(jù)湖中更快的SQL查詢,而全球三個主要云計算提供商都提供了數(shù)據(jù)湖存儲和分析。甚至還推出了將治理、安全性和分析與成本更低的存儲結(jié)合起來的數(shù)據(jù)湖屋的概念。本文將深入探討數(shù)據(jù)湖是什么、如何使用數(shù)據(jù)湖以及如何確保數(shù)據(jù)湖不會成為數(shù)據(jù)沼澤。
對數(shù)據(jù)湖的解釋
數(shù)據(jù)湖本質(zhì)上是一個單一的數(shù)據(jù)存儲庫,它保存用戶的所有數(shù)據(jù),直到準備好進行分析,或者可能只保存不適合數(shù)據(jù)倉庫的數(shù)據(jù)。通常情況下,數(shù)據(jù)湖以其原生文件格式存儲數(shù)據(jù),但可以將數(shù)據(jù)轉(zhuǎn)換為另一種格式以提高分析效率。擁有數(shù)據(jù)湖的目標是從數(shù)據(jù)中提取業(yè)務(wù)或其他分析的價值數(shù)據(jù)。
數(shù)據(jù)湖可以托管二進制數(shù)據(jù)(例如圖像和視頻)、非結(jié)構(gòu)化數(shù)據(jù)(例如PDF文檔)和半結(jié)構(gòu)化數(shù)據(jù)(例如CSV和JSON文件)以及結(jié)構(gòu)化數(shù)據(jù)(通常來自關(guān)系數(shù)據(jù)庫)。結(jié)構(gòu)化數(shù)據(jù)對分析更有用,但半結(jié)構(gòu)化數(shù)據(jù)可以很容易地導(dǎo)入結(jié)構(gòu)化形式中。非結(jié)構(gòu)化數(shù)據(jù)通??梢允褂弥悄茏詣踊D(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù)。
數(shù)據(jù)湖vs數(shù)據(jù)倉庫
問題不在于是否需要數(shù)據(jù)湖或數(shù)據(jù)倉庫。很可能兩者都需要,但其目的不同,也可以將它們組合起來。首先了解數(shù)據(jù)湖和數(shù)據(jù)倉庫之間的主要區(qū)別:
- 數(shù)據(jù)源:數(shù)據(jù)湖的典型數(shù)據(jù)源包括日志文件、來自點擊流的數(shù)據(jù)、社交媒體帖子以及來自互聯(lián)網(wǎng)連接設(shè)備的數(shù)據(jù)。數(shù)據(jù)倉庫通常存儲從事務(wù)數(shù)據(jù)庫、業(yè)務(wù)線應(yīng)用程序和操作數(shù)據(jù)庫中提取的數(shù)據(jù)以供分析。
- 模式策略:數(shù)據(jù)湖的數(shù)據(jù)庫模式通常在分析時應(yīng)用,稱之為讀模式。企業(yè)數(shù)據(jù)倉庫的數(shù)據(jù)庫模式通常在創(chuàng)建數(shù)據(jù)存儲之前設(shè)計,并在數(shù)據(jù)導(dǎo)入時應(yīng)用于數(shù)據(jù),這稱之為寫模式。
- 存儲基礎(chǔ)設(shè)施:數(shù)據(jù)倉庫通常采用大量價格高昂的內(nèi)存和SSD硬盤,以便快速提供查詢結(jié)果。數(shù)據(jù)湖通常在計算機集群上使用價格較低的機械硬盤進行存儲。數(shù)據(jù)倉庫和數(shù)據(jù)湖都使用大規(guī)模并行處理(MPP)來加速SQL查詢。
- 原始數(shù)據(jù)與精選數(shù)據(jù):數(shù)據(jù)倉庫中的數(shù)據(jù)應(yīng)該被整理到可以將數(shù)據(jù)倉庫視為企業(yè)的“單一事實來源”的程度。數(shù)據(jù)湖中的數(shù)據(jù)可能會或可能不會被管理:數(shù)據(jù)湖通常從原始數(shù)據(jù)開始,然后可以過濾和轉(zhuǎn)換以進行分析。
- 誰使用它:數(shù)據(jù)倉庫用戶通常是業(yè)務(wù)分析師。數(shù)據(jù)湖用戶通常是數(shù)據(jù)科學(xué)家或數(shù)據(jù)工程師,至少在最初是這樣。數(shù)據(jù)在經(jīng)過整理之后,業(yè)務(wù)分析師就可以訪問這些數(shù)據(jù)。
- 分析類型:數(shù)據(jù)倉庫的典型分析包括商業(yè)智能、批處理報告和可視化。對于數(shù)據(jù)湖,典型的分析包括機器學(xué)習(xí)、預(yù)測分析、數(shù)據(jù)發(fā)現(xiàn)和數(shù)據(jù)剖析。
什么是數(shù)據(jù)集市?
數(shù)據(jù)集市是僅限于來自單個部門或業(yè)務(wù)單位數(shù)據(jù)的分析數(shù)據(jù)庫,這與數(shù)據(jù)倉庫相反。數(shù)據(jù)倉庫將企業(yè)的所有關(guān)系數(shù)據(jù)組合成適合分析的形式,而數(shù)據(jù)集市通過僅包含與部門相關(guān)的數(shù)據(jù)來提供有效的分析。因此,它們本質(zhì)上是孤立的。有人聲稱孤島無關(guān)緊要,因為業(yè)務(wù)部門不需要排除的數(shù)據(jù)。在現(xiàn)實生活中,這通常很重要——總有一些企業(yè)高管需要基于來自多個業(yè)務(wù)部門的組合數(shù)據(jù)的報告。這就是目前看到有很多數(shù)據(jù)湖和數(shù)據(jù)倉庫而很少看到數(shù)據(jù)集市的原因之一。
數(shù)據(jù)湖上更快的SQL查詢
當(dāng)企業(yè)將原始數(shù)據(jù)存儲在數(shù)據(jù)池中時,在數(shù)據(jù)工程師或數(shù)據(jù)科學(xué)家對數(shù)據(jù)進行處理之前,這些數(shù)據(jù)可能對業(yè)務(wù)分析師毫無用處。除了過濾和數(shù)據(jù)轉(zhuǎn)換之外,數(shù)據(jù)湖還需要數(shù)據(jù)目錄、數(shù)據(jù)安全性和模式定義。對于沒有這些功能的數(shù)據(jù)湖來說,就是數(shù)據(jù)沼澤。
幸運的是,有很多工具可以幫助過濾和組織數(shù)據(jù)湖中的數(shù)據(jù)。例如,企業(yè)可以通過創(chuàng)建ORC格式的Hive元存儲來滿足對模式的需求。在設(shè)置完成之后,元存儲通過Presto等大規(guī)模并行SQL引擎支持快速SQL查詢(優(yōu)化的行-列格式是一種壓縮的列存儲,針對Hive進行了優(yōu)化,并與Presto配合使用)。
ApacheSpark是另一個大規(guī)模并行SQL引擎。雖然它可以使用ORC格式,但它更適用于另一種壓縮的列式存儲Parquet。Spark可以對Parquet文件執(zhí)行垂直和水平分區(qū),生成只需要讀取必要數(shù)據(jù),并可以跳過不相關(guān)數(shù)據(jù)的查詢計劃。
數(shù)據(jù)湖屋
Spark和MLflow背后的Databricks公司提供了他們所謂的數(shù)據(jù)湖屋(Data Lakehouse)。根據(jù)Databricks公司的介紹,數(shù)據(jù)湖屋結(jié)合了數(shù)據(jù)倉庫和數(shù)據(jù)湖的最佳特性:數(shù)據(jù)湖屋將數(shù)據(jù)倉庫和數(shù)據(jù)湖統(tǒng)一在一個簡單的平臺中,以處理其所有數(shù)據(jù)、分析和人工智能用例。它建立在開放且可靠的數(shù)據(jù)基礎(chǔ)之上,可以有效處理所有數(shù)據(jù)類型,并在其所有數(shù)據(jù)和云平臺上應(yīng)用一種通用的安全和治理方法。
Databricks公司開源發(fā)布的DeltaLake通過直接為數(shù)據(jù)湖中的數(shù)據(jù)保證了可靠性和高性能,這構(gòu)成了數(shù)據(jù)湖屋的基礎(chǔ)。Databricks Lakehouse平臺還包括Unity Catalog,它為數(shù)據(jù)和人工智能提供細粒度的治理。Databricks聲稱其數(shù)據(jù)湖庫的性價比是數(shù)據(jù)倉庫的12倍。
內(nèi)部部署和公共云中的數(shù)據(jù)湖
從歷史上看,數(shù)據(jù)湖是使用Apache Hadoop計算機集群和HDFS(Hadoop分布式文件系統(tǒng))在內(nèi)部部署設(shè)施實施的。Hadoop集群曾經(jīng)是Cloudera、Hortonworks等公司的主要業(yè)務(wù),而Cloudera與Hortonworks在2018年合并。
改變的是云計算服務(wù),特別是超大規(guī)模公共云供應(yīng)商AWS、微軟Azure和谷歌云平臺(GCP)。這三個主要云計算提供商都提供數(shù)據(jù)湖存儲產(chǎn)品:Amazon S3和Amazon EMR(以前稱為Amazon Elastic Map Reduce)、Azure DataLake Store(ADLS)和Google Cloud Storage(GCS)。這三者還提供數(shù)據(jù)攝取、數(shù)據(jù)處理、分析和機器學(xué)習(xí)服務(wù)。創(chuàng)建、管理和擴展云數(shù)據(jù)湖比在數(shù)據(jù)中心管理Hadoop集群要容易和快捷得多。其權(quán)衡的結(jié)果是,云計算中的長期運營支出最終將變得更高。
數(shù)據(jù)湖的分析和機器學(xué)習(xí)
在此之前討論了使用Presto和ApacheSpark在數(shù)據(jù)湖上進行更快的SQL查詢。SQL只是分析數(shù)據(jù)的一種方法,盡管它非常重要并且通常是第一步。此外,考慮采用Power BI、Tableau或Qlik等商業(yè)智能工具;Jupyter、Zeppelin或Spark notebooks;, scikit-learn、SparkML或KNIME等機器學(xué)習(xí)技術(shù);TensorFlow或PyTorch等深度學(xué)習(xí)技術(shù)。
超大規(guī)模云計算供應(yīng)商擁有自己的分析和機器學(xué)習(xí)工具,用戶可以連接到他們的數(shù)據(jù)湖。
Amazon Athena使用Presto和Hive對AmazonS3中的數(shù)據(jù)執(zhí)行SQL查詢。Amazon EMR是一個基于云計算的大數(shù)據(jù)平臺,用于使用Apache Spark、Apache Hive和Presto等開源分析框架運行大規(guī)模分布式數(shù)據(jù)處理作業(yè)、交互式SQL查詢和機器學(xué)習(xí)應(yīng)用程序。Amazon SageMaker是一項完全托管的服務(wù),用于構(gòu)建、訓(xùn)練和部署機器學(xué)習(xí)模型。
Azure Data Lake Analytics (ADLA)是一種傳統(tǒng)的按需分析作業(yè)服務(wù),可以簡化大數(shù)據(jù),并使用U-SQL,也就是SQL+C#。ADLA正被Azure Synapse Analytics所取代,這是一種將數(shù)據(jù)集成、企業(yè)數(shù)據(jù)倉庫和大數(shù)據(jù)分析結(jié)合在一起的無限分析服務(wù)。它讓用戶可以自由地根據(jù)自己的條件查詢數(shù)據(jù),可以使用無服務(wù)器選項,也可以大規(guī)模使用專用選項。Synapse結(jié)合了數(shù)據(jù)湖、企業(yè)數(shù)據(jù)倉庫和操作數(shù)據(jù)查詢功能,可以自動從ADLA和數(shù)據(jù)倉庫遷移數(shù)據(jù)和代碼。Synapse與Azure機器學(xué)習(xí)、Azure認知服務(wù)和Power BI進行了深度集成。
Google云存儲提供與許多強大的谷歌云服務(wù)的原生集成,例如BigQuery(數(shù)據(jù)倉庫)、Dataproc(Hadoop生態(tài)系統(tǒng))、Dataflow(無服務(wù)器流式分析)、視頻智能API、Cloud Vision API和人工智能平臺。
總之,用戶可以非常靈活地選擇合適的工具來分析其數(shù)據(jù)。
結(jié)論
自從進入Hadoop集群和MapReduce時代以來,數(shù)據(jù)湖變得更加有用。由于內(nèi)存和大規(guī)模并行處理以及基于Hive的模式,Presto和ApacheSpark提供比MapReduce更快的SQL處理。與內(nèi)部部署的計算機集群相比,基于云計算的數(shù)據(jù)湖更易于創(chuàng)建、管理和擴展。而云計算數(shù)據(jù)湖也將與廣泛的分析和人工智能工具緊密集成。
原文標題:??What is a data lake? Massively scalable storage for big data analytics???,作者:Martin Heller?