Cloudera 客戶運行著地球上最大的一些數(shù)據(jù)湖。這些湖為關(guān)鍵任務(wù)大規(guī)模數(shù)據(jù)分析、商業(yè)智能 (BI) 和機器學習用例,包括企業(yè)數(shù)據(jù)倉庫,提供動力。近年來,創(chuàng)造了“數(shù)據(jù)湖倉”一詞來描述這種對數(shù)據(jù)湖中的數(shù)據(jù)進行表分析的架構(gòu)模式。在匆匆奔向這個術(shù)語的過程中,許多廠商忽略了這樣一個事實,即數(shù)據(jù)架構(gòu)的開放性是其持久性和長盛不衰的保證。
關(guān)于數(shù)據(jù)倉庫和數(shù)據(jù)湖
數(shù)據(jù)湖和數(shù)據(jù)倉庫將海量的各種類型數(shù)據(jù)統(tǒng)一到一個中心位置。但是有著截然不同的架構(gòu)世界觀。數(shù)倉是為SQL 分析垂直集成的,而數(shù)據(jù)湖優(yōu)先考慮 SQL 之外的分析方法的靈活性。
為了能兼得魚與熊掌——數(shù)據(jù)湖中分析的靈活性和數(shù)倉中簡單快速的 SQL,企業(yè)經(jīng)常部署數(shù)據(jù)湖來補充他們的數(shù)倉,在數(shù)據(jù)提取、轉(zhuǎn)換、加載 (ETL) 或 ELT 管道的最后一步讓數(shù)據(jù)湖為數(shù)倉系統(tǒng)提供數(shù)據(jù)。在這樣做的過程中,他們等于接受了數(shù)據(jù)在倉庫中的鎖定。
但可以有一個更好的方法:用 Hive 元存儲,這是過去十年數(shù)據(jù)平臺一個出人意料的好產(chǎn)品。隨著用例的成熟,我們看到高效的交互式 BI 分析和事務(wù)語義來修改數(shù)據(jù)的需求。
數(shù)據(jù)湖倉的迭代
第一代 Hive元存儲試圖解決在數(shù)據(jù)湖上高效運行 SQL 的性能考慮。它提供了數(shù)據(jù)庫、模式和表的概念,用于描述數(shù)據(jù)湖的結(jié)構(gòu),讓 BI 工具可以有效地充分使用數(shù)據(jù)。它添加了描述數(shù)據(jù)邏輯和物理布局的元數(shù)據(jù),支持基于成本的優(yōu)化器、動態(tài)分區(qū)裁剪以及針對 SQL 分析的一些關(guān)鍵性能改進。
第二代 Hive元存儲添加了對使用 Hive ACID 的事務(wù)更新的支持。數(shù)據(jù)湖倉雖然尚未正式命名,但已開始熱鬧。事務(wù)性啟用了持續(xù)攝取和插入/更新/刪除(或合并)的用例,從而打開了數(shù)倉樣式的查詢、功能以及從其他數(shù)倉系統(tǒng)到數(shù)據(jù)湖的遷移。這對我們的許多客戶來說非常有價值。
Delta Lake項目采用不同的方法來解決這個問題。Delta Lake為數(shù)據(jù)湖中的數(shù)據(jù)添加了事務(wù)支持??梢赃M行數(shù)據(jù)策管,為數(shù)據(jù)湖帶來了運行數(shù)倉式分析的可能性。
漸漸的在某個時刻,“數(shù)據(jù)湖倉”這個詞因為這種架構(gòu)模式而被造出來了。我們相信湖倉是簡潔地定義這種模式的好方法,并很快在客戶和行業(yè)中獲得了共識。
開放數(shù)據(jù)湖倉滿足互操作性需求
在過去幾年中,隨著新數(shù)據(jù)類型的誕生和新的數(shù)據(jù)處理引擎的出現(xiàn),為了簡化分析,企業(yè)所期望的兩全其美真的需要分析引擎的靈活性。如果企業(yè)海量有價值的數(shù)據(jù)需要被管理,那么企業(yè)必須能夠開放的選擇不同的分析引擎,甚至是供應(yīng)商。
湖倉模式在實施過程中存在一個嚴重的矛盾:雖然數(shù)據(jù)湖是開放的,但湖倉卻不是。
在能夠添加 Impala、Spark 等引擎之前,Hive元存儲一直遵循 Hive為先的演進。Delta lake是Spark為主的演進;如果客戶想要自由選擇不同的引擎而不只是表格式,他們的選擇極為有限。
客戶從一開始就要求更多。更多格式、更多引擎、更多互操作性。今天,Hive 元存儲被多個引擎和多個存儲選項使用。除了 Hive 和 Spark,還有 Presto、Impala 等等。Hive元存儲是有機地演進支持這些用例,因此集成通常很復雜且容易出錯。
為滿足互操作性需求而設(shè)計的開放數(shù)據(jù)湖倉從根本上解決了這一架構(gòu)問題。它會讓那些全押在一個平臺上的人感到不安,但社區(qū)驅(qū)動的創(chuàng)新能幫助解決現(xiàn)實世界的問題,以務(wù)實的方式幫助使用同類最佳工具,并克服供應(yīng)商的鎖定。
開放湖倉Apache Iceberg的誕生
Apache Iceberg 從一開始構(gòu)建時,其目標就是在多個分析引擎在云原生規(guī)模上輕松實現(xiàn)互操作。這項創(chuàng)新的誕生之地 Netflix 需要將 100 PB 規(guī)模的 S3 數(shù)據(jù)湖構(gòu)建到數(shù)倉中,這可能是最佳示例了。云原生表格式由其創(chuàng)建者開源到 Apache Iceberg 中。
Apache Iceberg 真正的超級力量是它的社區(qū)。在過去三年中,Apache Iceberg 社區(qū)有機地蓬勃發(fā)展,增加了一系列令人贊嘆的優(yōu)異集成:
- 數(shù)據(jù)處理和 SQL 引擎 Hive、Impala、Spark、PrestoDB、Trino、Flink
- 多種文件格式:Parquet、AVRO、ORC
- 社區(qū)中的大型采用者:Apple、LinkedIn、Adobe、Netflix、Expedia 等
使這個多樣化的社區(qū)蓬勃發(fā)展的原因是數(shù)千家公司的集體需求,以確保數(shù)據(jù)湖可以演變?yōu)榘瑪?shù)據(jù)倉庫,同時保持跨引擎的分析靈活性和開放性。這使得開放式湖倉成為可能:為未來提供無限的分析靈活性。
Cloudera擁抱Iceberg模式
在 Cloudera,我們?yōu)槲覀兊拈_源根基感到自豪,并致力于社區(qū)貢獻。自 2021 年以來,我們?yōu)槿找鎵汛蟮?Iceberg 社區(qū)在 Impala、Hive、Spark 和 Iceberg 上做出了數(shù)百項貢獻。我們擴展了 Hive 元存儲將集成添加到我們的許多開源引擎中以充分利用 Iceberg 表。2022 年初,我們在 Cloudera Data Platform (CDP) 中提供了 Apache Iceberg 的技術(shù)預覽,使 Cloudera 客戶能夠在我們的數(shù)據(jù)倉庫、數(shù)據(jù)工程和機器學習服務(wù)中實現(xiàn) Iceberg 的模式和時間旅行能力。
我們的客戶一直告訴我們,無論是現(xiàn)代 BI、AI/ML、數(shù)據(jù)科學還是更多,分析需求都在迅速發(fā)展。選擇由 Apache Iceberg 提供支持的開放數(shù)據(jù)湖倉讓企業(yè)可以自由選擇分析。