溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hive Metastore是什么

發(fā)布時(shí)間:2021-12-10 09:09:15 來(lái)源:億速云 閱讀:777 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下Hive Metastore是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Hive Metastore是Hive用來(lái)管理庫(kù)表元數(shù)據(jù)的一個(gè)服務(wù),有了它上層的服務(wù)不用再跟裸的文件數(shù)據(jù)打交道,而是可以基于結(jié)構(gòu)化的庫(kù)表信息構(gòu)建計(jì)算框架?,F(xiàn)在除了Hive之外很多計(jì)算框架都支持以Hive Metastore為元數(shù)據(jù)中心來(lái)查詢底層Hadoop生態(tài)的數(shù)據(jù),比如Drill, Presto, Spark等等。

Hive Metastore默認(rèn)是不做任何用戶認(rèn)證的,也就是說(shuō)只要指定metastore服務(wù)的IP和端口就可以通過(guò)Thrift協(xié)議連接上并讀取元數(shù)據(jù)。Metastore也支持基于Kerberos的認(rèn)證,不過(guò)這里的認(rèn)證只是為了保護(hù)對(duì)于metastore的訪問(wèn),一旦認(rèn)證通過(guò),任何人調(diào)用相同api所獲得的結(jié)果都是一樣的,而不會(huì)管當(dāng)前到底是誰(shuí)在調(diào)用。

授權(quán)方面在Hive里面有幾種方式,一種是基于存儲(chǔ)層面的文件權(quán)限來(lái)進(jìn)行授權(quán)管理,如果你有對(duì)應(yīng)的目錄/文件的權(quán)限你就可以進(jìn)行相應(yīng)的查詢,這種機(jī)制的問(wèn)題在于力度比較粗,因?yàn)樗鼨?quán)限的對(duì)象是目錄/文件,無(wú)法進(jìn)行更細(xì)粒度的控制,比如列級(jí)別的權(quán)限控制。而且對(duì)于Blob Store類的服務(wù)比如AWS的S3和阿里云的OSS等這種,由于已經(jīng)沒(méi)有真正HDFS層面的“用戶”,因此這種機(jī)制也無(wú)法實(shí)施。

另外一種授權(quán)機(jī)制是HiveServer2中基于SQL標(biāo)準(zhǔn)的授權(quán)機(jī)制(GRANT/REVOKE),它提供了更細(xì)粒度的授權(quán)機(jī)制,但是這種機(jī)制是在HiveServer2里面提供的,跟Metastore沒(méi)有關(guān)系。社區(qū)還發(fā)展出另外兩框插件式的授權(quán)解決方案: Apache Ranger和Apache Sentry, 以Ranger為例,要使用Ranger都要把它內(nèi)嵌到對(duì)應(yīng)的上層引擎比如Presto、Spark里面去。Presto、Spark在發(fā)送查詢語(yǔ)句的時(shí)候,會(huì)被Ranger插件攔截,根據(jù)當(dāng)前用戶的權(quán)限信息決定對(duì)請(qǐng)求進(jìn)行攔截還是放行。也就是說(shuō)這些授權(quán)機(jī)制都是在Metastore之外實(shí)現(xiàn)的,Metastore的作用更多的只是底層數(shù)據(jù)庫(kù)的一個(gè)簡(jiǎn)單服務(wù),沒(méi)有實(shí)現(xiàn)更多的多租戶、權(quán)限認(rèn)證管理的功能。

社區(qū)對(duì)Metastore做過(guò)一些有意思的擴(kuò)展,比如Hotels.com公司開發(fā)了一個(gè)叫做Waggle Dance的框架,它的出發(fā)動(dòng)機(jī)是在一個(gè)公司內(nèi)部往往會(huì)搭建不止一個(gè)大數(shù)據(jù)集群,因此也就有了多個(gè)Metastore元數(shù)據(jù)服務(wù),這些Metastore之間是互相不通的,造成了數(shù)據(jù)/元數(shù)據(jù)的孤島。Waggle Dance則相當(dāng)于Metastore的一個(gè)路由服務(wù),它完整的實(shí)現(xiàn)了Metastore的Thrift API,用戶需要訪問(wèn)Metastore的時(shí)候直接訪問(wèn)Waggle Dance,而Waggle Dance背后則對(duì)接了多個(gè)Hive Metastore,把這些本來(lái)互不相連的Metastore組合成了一個(gè)整體,解決了數(shù)據(jù)/元數(shù)據(jù)孤島的問(wèn)題。不過(guò)Waggle Dance也有它的問(wèn)題,比如不同的Hive Metastore之間可能會(huì)有同名的schema,這樣就必須不通metastore之間事先商量好一些shcema名字前綴才能保證整體schema名字的唯一性;再比如Hive Metastore的Thrift API是在不斷演進(jìn)的,不同版本之間的API不完全一樣,這樣Waggle Dance可能會(huì)需要支持多個(gè)版本的API,如果Hive Metastore API出現(xiàn)一些breaking change的話,可能會(huì)導(dǎo)致Waggle Dance整個(gè)方案無(wú)法維持。

AWS Glue是對(duì)于Hive Metastore的另一個(gè)擴(kuò)展,跟普通Hive Metastore不一樣的是,Glue是一個(gè)支持多租戶的元數(shù)據(jù)服務(wù) — 不同的用戶去調(diào)用同樣的元數(shù)據(jù)接口: `getAllDatabases()` 返回的結(jié)果是不一樣的。而且Glue也把授權(quán)信息內(nèi)置到服務(wù)里面,不過(guò)它提供的方式不是SQL標(biāo)準(zhǔn)里面的grant/revoke的方式,而是基于AWS統(tǒng)一的IAM權(quán)限策略的方式,比如下面的權(quán)限規(guī)則允許用戶訪問(wèn)finegrainaccess數(shù)據(jù)庫(kù)以及它下面以dev_開頭的所有的表。

   
     
   
   
   
 "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/finegrainaccess", "arn:aws:glue:us-east-1:123456789012:tables/finegrainaccess/dev_*"
           
這樣即使是在同一個(gè)租戶下的不同子帳號(hào)調(diào)用同樣的元數(shù)據(jù)方法`getAllDatabases()` 返回的數(shù)據(jù)也是不一樣的。
 

如果說(shuō)Waggle Dance是在Hive Metastore的“體制內(nèi)創(chuàng)新”,那么AWS Glue則是對(duì)于Hive Metastore的“推翻式創(chuàng)新”:Waggle Dance實(shí)現(xiàn)的是Hive Metastore的API,對(duì)于上層引擎來(lái)說(shuō)可以說(shuō)是基本無(wú)感,而Glue則只是保證實(shí)現(xiàn)了Hive Metastore一樣的功能,但是它不再是一個(gè)Thrift API,而是一個(gè)REST API,上層引擎需要做相應(yīng)的改動(dòng)才能對(duì)接到這個(gè)Glue。

以上是“Hive Metastore是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI