您好,登錄后才能下訂單哦!
小編給大家分享一下Hive Metastore是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Hive Metastore是Hive用來管理庫表元數據的一個服務,有了它上層的服務不用再跟裸的文件數據打交道,而是可以基于結構化的庫表信息構建計算框架。現在除了Hive之外很多計算框架都支持以Hive Metastore為元數據中心來查詢底層Hadoop生態的數據,比如Drill, Presto, Spark等等。
Hive Metastore默認是不做任何用戶認證的,也就是說只要指定metastore服務的IP和端口就可以通過Thrift協議連接上并讀取元數據。Metastore也支持基于Kerberos的認證,不過這里的認證只是為了保護對于metastore的訪問,一旦認證通過,任何人調用相同api所獲得的結果都是一樣的,而不會管當前到底是誰在調用。
授權方面在Hive里面有幾種方式,一種是基于存儲層面的文件權限來進行授權管理,如果你有對應的目錄/文件的權限你就可以進行相應的查詢,這種機制的問題在于力度比較粗,因為它權限的對象是目錄/文件,無法進行更細粒度的控制,比如列級別的權限控制。而且對于Blob Store類的服務比如AWS的S3和阿里云的OSS等這種,由于已經沒有真正HDFS層面的“用戶”,因此這種機制也無法實施。
另外一種授權機制是HiveServer2中基于SQL標準的授權機制(GRANT/REVOKE),它提供了更細粒度的授權機制,但是這種機制是在HiveServer2里面提供的,跟Metastore沒有關系。社區還發展出另外兩框插件式的授權解決方案: Apache Ranger和Apache Sentry, 以Ranger為例,要使用Ranger都要把它內嵌到對應的上層引擎比如Presto、Spark里面去。Presto、Spark在發送查詢語句的時候,會被Ranger插件攔截,根據當前用戶的權限信息決定對請求進行攔截還是放行。也就是說這些授權機制都是在Metastore之外實現的,Metastore的作用更多的只是底層數據庫的一個簡單服務,沒有實現更多的多租戶、權限認證管理的功能。
社區對Metastore做過一些有意思的擴展,比如Hotels.com公司開發了一個叫做Waggle Dance的框架,它的出發動機是在一個公司內部往往會搭建不止一個大數據集群,因此也就有了多個Metastore元數據服務,這些Metastore之間是互相不通的,造成了數據/元數據的孤島。Waggle Dance則相當于Metastore的一個路由服務,它完整的實現了Metastore的Thrift API,用戶需要訪問Metastore的時候直接訪問Waggle Dance,而Waggle Dance背后則對接了多個Hive Metastore,把這些本來互不相連的Metastore組合成了一個整體,解決了數據/元數據孤島的問題。不過Waggle Dance也有它的問題,比如不同的Hive Metastore之間可能會有同名的schema,這樣就必須不通metastore之間事先商量好一些shcema名字前綴才能保證整體schema名字的唯一性;再比如Hive Metastore的Thrift API是在不斷演進的,不同版本之間的API不完全一樣,這樣Waggle Dance可能會需要支持多個版本的API,如果Hive Metastore API出現一些breaking change的話,可能會導致Waggle Dance整個方案無法維持。
AWS Glue是對于Hive Metastore的另一個擴展,跟普通Hive Metastore不一樣的是,Glue是一個支持多租戶的元數據服務 — 不同的用戶去調用同樣的元數據接口: `getAllDatabases()` 返回的結果是不一樣的。而且Glue也把授權信息內置到服務里面,不過它提供的方式不是SQL標準里面的grant/revoke的方式,而是基于AWS統一的IAM權限策略的方式,比如下面的權限規則允許用戶訪問finegrainaccess數據庫以及它下面以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_*"這樣即使是在同一個租戶下的不同子帳號調用同樣的元數據方法`getAllDatabases()` 返回的數據也是不一樣的。
如果說Waggle Dance是在Hive Metastore的“體制內創新”,那么AWS Glue則是對于Hive Metastore的“推翻式創新”:Waggle Dance實現的是Hive Metastore的API,對于上層引擎來說可以說是基本無感,而Glue則只是保證實現了Hive Metastore一樣的功能,但是它不再是一個Thrift API,而是一個REST API,上層引擎需要做相應的改動才能對接到這個Glue。
以上是“Hive Metastore是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。