Hadoop 生態(tài)里,為什么 Hive 活下來了?

大家好,我是夢(mèng)想家Alex ~ 我們都知道 Hadoop 生態(tài)圈非常龐大,但為什么Hive能活下來呢,今天這篇文章將為你解密!


作者 | Einat Orr 博士
譯者 | Sambodhi
策劃 | Tina

Apache Hive 能在下一輪“淘汰”中幸存下來嗎?

Apache Hive 在 2010 年作為 Hadoop 生態(tài)系統(tǒng)的一部分嶄露頭角,當(dāng)時(shí) Hadoop 是一種新穎而創(chuàng)新的大數(shù)據(jù)分析方法。Hive 的功能就是實(shí)現(xiàn) Hadoop 的 SQL 接口。它的架構(gòu)包括兩個(gè)主要服務(wù):一是查詢引擎:負(fù)責(zé)執(zhí)行 SQL 語句;二是元存儲(chǔ):負(fù)責(zé)在 HDFS 中將數(shù)據(jù)收集虛擬化為表。


HDFS 上的 Hive 的主要組成部分,包括用戶界面、驅(qū)動(dòng)程序和元存儲(chǔ)。
Hadoop 背后的概念是革命的。分布式文件系統(tǒng)(HDFS)中存儲(chǔ)大量的數(shù)據(jù)集,運(yùn)行于商業(yè)硬件集群之上。并行執(zhí)行計(jì)算作業(yè)時(shí)使用 MapReduce 的數(shù)據(jù)。這類任務(wù)的分配由 Yarn 管理。主接口是一種編程語言,最初是 Java 或 Scala。

這些組件在 Apache 基金會(huì)下開源,可以免費(fèi)使用。這套技術(shù)已經(jīng)成為幾年來大規(guī)模分析的標(biāo)準(zhǔn)。

但是,這個(gè)技術(shù)棧已經(jīng)逐漸被一些新技術(shù)淘汰……

HDFS 被對(duì)象存儲(chǔ)所取代,由 AWS S3 主導(dǎo)。MapReduce 已經(jīng)被 Spark 所取代,Spark 也逐漸減少了對(duì) Hadoop 的依賴性。Yarn 正在被像 Kubernetes 這樣的技術(shù)取代。此外,Hive 的查詢引擎組件在性能和采用方面已經(jīng)被 Presto/Trino 超越。

雖然有這些改變,但大多數(shù)以數(shù)據(jù)湖為特色的組織仍然將活躍的 Hive Metastore 部署作為其架構(gòu)的一部分。與 Hadoop 的同類產(chǎn)品相比,你可能會(huì)想,“Hive Metastore 有什么特別之處?

”要回答這個(gè)問題,讓我們深入了解一下 Hive Metastore 目前提供了什么功能,以及正在出現(xiàn)什么技術(shù)來取代它。

Hive Metastore 做了什么?
在將新數(shù)據(jù)存入對(duì)象存儲(chǔ)中時(shí),我們會(huì)在 Hive Metastore 中注冊(cè)一個(gè)元存儲(chǔ) API,該 API 來自于任何數(shù)據(jù)應(yīng)用或編排工具。此生命性階段將一組對(duì)象從對(duì)象存儲(chǔ)重映射到 Hive 公開的表。部分注冊(cè)包含指定文件中保存的表的模式,以及描述這些列的元數(shù)據(jù)。以這種方式使用 Hive Metastore 有四個(gè)主要好處:虛擬化、可發(fā)現(xiàn)性、模式演化、性能。讓我們來詳細(xì)討論一下。

1. 虛擬化
數(shù)據(jù)分析師使用 SQL 通常不關(guān)心對(duì)象存儲(chǔ)的細(xì)節(jié)和其訪問模式。他們只是想要得到他們的表。

當(dāng)其他 Hadoop 組件被取代時(shí),Hive Metastore 將扮演不可替代的角色。每種新技術(shù)的引入都確保了對(duì) Hive Metastore 的支持,從而避免了依賴于 Hive 中定義的表對(duì)象的關(guān)鍵分析工作流。

2. 可發(fā)現(xiàn)性
當(dāng)公開新數(shù)據(jù)并更新數(shù)據(jù)時(shí),Hive Metastore 會(huì)變成包含在對(duì)象存儲(chǔ)中的所有集合的目錄。如果維護(hù)得當(dāng),就可以發(fā)現(xiàn)可供查詢的數(shù)據(jù)集。

另外,補(bǔ)充性信息可以保存在元存儲(chǔ)中,以便提供關(guān)于數(shù)據(jù)的有用信息,比如其更新頻率,誰擁有它,等等。

3. 模式演化
管理數(shù)據(jù)集所面臨的挑戰(zhàn)之一就是其可變性。在描述其屬性的現(xiàn)有列時(shí),記錄可以隨時(shí)間而改變。也有可能是屬性集本身會(huì)隨時(shí)間改變,從而導(dǎo)致表的模式發(fā)生改變。

上述的注冊(cè)過程為每一個(gè)屬于表的附加數(shù)據(jù)文件提供了模式的記錄。這就是說,如果模式在某一時(shí)刻發(fā)生了變化,那么它將被記錄到 Hive Metastore 中。在訪問數(shù)據(jù)時(shí),可以使用合適的模式進(jìn)行訪問。

這也為驗(yàn)證一個(gè)模式提供了一個(gè)很好的基礎(chǔ),如果它不應(yīng)該被改變,并對(duì)它發(fā)出警報(bào)。Hive 保存著創(chuàng)建此類測試的信息。

4. 性能
因?yàn)?Hive Metastore 將表映射到了底層對(duì)象上,所以它可以基于對(duì)象存儲(chǔ)支持的主鍵來表示分區(qū)。當(dāng)分區(qū)均衡且數(shù)量合理時(shí),分區(qū)的粒度可以由用戶設(shè)置,這種映射可以提高查詢性能。

這通常被稱為“分區(qū)修剪”(partition pruning),它允許查詢引擎識(shí)別哪些數(shù)據(jù)文件可以被跳過。

Hive 會(huì)在下一次革命中幸存嗎?
目前還沒有直接取代元存儲(chǔ)的候選者,但如果現(xiàn)有的一些趨勢(shì)占據(jù)上風(fēng)并發(fā)揮好作用,那么它可能會(huì)被淘汰。

讓我們來看看領(lǐng)先的繼任者們。

開放表格式
Iceberg、Hudi 和 Delta Lake 是這個(gè)類別中的三個(gè)參與者。每一個(gè)都是為了滿足不同的需求而創(chuàng)建的,但是隨著時(shí)間的推移,它們?nèi)繀R聚在一起,涵蓋了一系列的特性。這些特性允許:

可變性(Hudi、Delta)

訪問大表的效率(Iceberg)

模式實(shí)施和演化(Delta)

由于 Hive Metastore 是一個(gè)所有應(yīng)用程序都支持的通用接口,因此使用開放表格式的組織仍然依賴 Hive 來進(jìn)行虛擬化,以及 / 或用于格式未涵蓋的其他用例。

數(shù)據(jù)目錄
在過去的一年多時(shí)間里,我們目睹了由數(shù)據(jù)工程領(lǐng)域的領(lǐng)導(dǎo)者發(fā)布的 10 多個(gè)開源發(fā)現(xiàn)工具的閃電戰(zhàn),這表明了對(duì)組織級(jí)數(shù)據(jù)目錄的需求。這些新來者加入了其他現(xiàn)有的商業(yè)數(shù)據(jù)目錄產(chǎn)品,如 Allation。

目錄支持對(duì)象存儲(chǔ)與目前使用的大多數(shù)數(shù)據(jù)庫的映射。如有可能,許多發(fā)現(xiàn)工具將利用已經(jīng)在 Hive Metastore 中的數(shù)據(jù),否則就會(huì)進(jìn)入對(duì)象存儲(chǔ)。毫不奇怪,隨著時(shí)間的推移,這些工具很有可能取代 Hive Metastore 的編目功能。

可觀察性工具
可觀察性工具的主要目的是在運(yùn)行中監(jiān)控?cái)?shù)據(jù)管道的質(zhì)量和數(shù)據(jù)本身。一些工具專注于前者(如 Databand),而另一些工具側(cè)重于后者(Great Expectations 或 Monte Carlo)。如果可觀察性工具在整個(gè)數(shù)據(jù)生命周期內(nèi)實(shí)施,它可以動(dòng)態(tài)地更新數(shù)據(jù)目錄,并將 Hive Metastore 替換為目錄。

結(jié)語
許多技術(shù)已經(jīng)開始在改進(jìn) Hive 的功能方面有所突破。但是現(xiàn)在還沒有任何一種技術(shù)足夠成熟,也沒有就成功去除 Hive Metastore 的組合達(dá)成共識(shí)。這并不意味著它應(yīng)該或?qū)⒗^續(xù)成為數(shù)據(jù)架構(gòu)的一部分。實(shí)際上,它在可用性和性能方面都存在著明顯的不足。值得關(guān)注的是 Hive Metastore:

難以安裝和維護(hù)。

非云原生架構(gòu),使得管理服務(wù)的實(shí)施變得復(fù)雜。

因依賴關(guān)系型數(shù)據(jù)庫而受到可擴(kuò)展性限制。

綜合這些因素,我們可以預(yù)測 Hive Metastore 不會(huì)在下一個(gè)數(shù)據(jù)架構(gòu)的演進(jìn)中幸存下來。這種情況不會(huì)自動(dòng)發(fā)生——它需要來自社區(qū)內(nèi)部的力量。愿你與我們攜手共創(chuàng)美好未來!

作者:Einat Orr 博士


歡迎關(guān)注:大數(shù)據(jù)夢(mèng)想家