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