1. Hive-cli與Beeline的區別

    2020-05-03 11:10發布

    Hive-cli與Beeline的區別

    hive-cli hive連接hivesever的命令行工具,從hive出生就一直存在,但隨著hive功能的增強、bug的修復、版本升級,hive-cli結構的局限性跟不上hive的發展,如果強行更改就不能滿足向下兼容,就出現了全新的beeline命令行結構,即就是hive-cli能做的事beeline都能做,而beeline能做的事hive-cli不一定能做。

    Hive-cli 的特點

    1、Hive-cli是通過MetaServer訪問元數據的

    2、CliDriverSQL本地直接編譯,然后訪問MetaStore,提交作業,是重客戶端。

    3、運行hive會自動運行一個RunJar進程,進程是提供thriftRPC的,就是metastore服務。

    Beeline的特點

    1、beeline一個純粹的客戶端,用來連接hiverserver2。

    2、BeeLine是把SQL提交給HiveServer2,由HiveServer2編譯,然后訪問MetaStore,提交作業,是輕客戶端。

    3、多用戶、安全、可以實現其權限控制。

    區別

    beeline有權限控制而hive cli沒有,因為hive cli讀取元數據繞過了HiveServer2直接從metaserver訪問元數據,而beeline通過HiveServer2的管控,實現其多用戶的權限控制。

    Hive的授權機制介紹

    Hive的授權機制

    當前hive支持種授權模型以滿足不同的應用場景

     

    下面是2種常見的Hive應用場景

    1. hive作為一個表存儲層,作為Hive HCatalog API 的用戶就是這種場景,如Apache Pig,MapReduce和一些強大的并行處理數據庫(Cloudera Impala, Facebook Presto, Spark SQL等等)。這種場景中,hive為在存儲中(通常是HDFS)的文件提供了一個表抽象和元數據服務。這些用戶能夠直接訪問HDFS和metastore服務(該服務提供了一個訪問元數據的API)。HDFS的訪問權限控制是通過HDFS的權限管理機制實現的。而元數據的訪問控制則需要由hive的配置來完成。

    2. Hive作為一個SQL查詢引擎。這是hive最常用的場景。這是SQL用戶和BI工具的'Hive view',這種場景又可以分為如下兩類:

    a. Hive 命令行用戶:這類用戶可以直接訪問HDFS和Hive metastore服務,這類場景類似于上面第一種場景。

    需要說明的是,Hive CLI這種方式已經被官方舍棄,由beeline取代。

    b.ODBC/JDBC 和其他 HiveServer2 API 用戶(比如beeline),這類用戶對于所有數據和元數據的訪問都是通過HiveServer2來完成的。他們不會直接訪問HDFS或者metastore服務。

     

    授權模型介紹

    1. Metastore server中基于存儲的授權模型(Storage Based Authorization in the Metastore Server

    在上面的應用場景1和2a中,用戶可以直接訪問數據。Hive的配置將無法控制對數據的訪問,HDFS的權限對表存儲的訪問就是一個事實的來源(不太懂什么意思)。通過啟用 Storage Based Authorization in the Metastore Server,就可以使用一個單一的來源并擁有一個一致性的數據和元數據授權策略模型。為了控制在元數據對象如數據庫、表、分區上對元數據的訪問,當你去訪問這些對象在文件系統中對應的目錄時將會檢查權限。通過確保查詢是由最終用戶 (需要將配置項hive.server2.enable.doAs設置為true,這也是其默認值)來運行,可以保護通過HiveServer2(上面的場景2b)進行的訪問。

    注意,通過使用HDFS ACL,在對文件系統的訪問控制上我們會有很大的靈活性,相應的在Storage Based Authorization模型中也就會提供更多的靈活性了。該特性已經在Hive0.14中可用了。

     

    2. HiveServer2中基于SQL標準的授權模型(SQL Standards Based Authorization in HiveServer2)

    盡管Storage Based Authorization模型在數據庫、表和分區層面可以提供訪問控制,但是還無法在更精細的層面如列和視圖提供權限控制,因為它的控制是通過對文件系統的目錄和文件的訪問控制來實現的,一個良好的授權訪問控制模型的必要條件就是它能夠提供用戶需要訪問的列和行的權限控制。而文件系統級別的訪問控制只能提供對整個文件的控制,HiveServer2滿足這個條件,因為它有一個理解(通過使用SQL)行和列的API,它能夠提供你的SQL查詢所需要的對列和行訪問的最小權限。

    SQL Standards Based Authorization (在Hive0.13中引入,HIVE-5837)的使用能夠提供細粒度的訪問控制,它是基于SQL標準來進行授權的,使用類似于 grant/revoke 的語句來控制訪問。通過HiveServer2的配置可以使用這個授權模型。

    注意,對于上面提到的2a場景(HIVE CLI),SQL Standards Based Authorization是無法使用的。因為Hive CLI是直接訪問HDFS的,用戶可以非常容易越過SQL Standards Based Authorization的檢查,甚至完全可以禁用它。禁用此功能可避免給用戶帶來錯誤的安全性。因此在生產環境中,為了提高整個環境的安全性,我們應該盡量使用HiveServer2服務,同時也不要給用戶提供Hive CLI客戶端工具。

     

    3. 使用Apache Ranger & Sentry 進行授權

    Apache Ranger 和 Apache Sentry 都是Apache中的項目,他們通過使用hive提供的插件進行授權管理。

    通過使用他們可以獲得更多的功能,比如,使用Ranger可以通過web的方式查看和管理策略,查看審計信息,基于運行時的特性可以動態的控制行和列的訪問控制(包括column masking)。

    4.Hive舊的默認的授權模型(傳統模型)

    Hive Old Default AuthorizationHive2.0.0之前的默認模型)是hive早期版本中使用的一種授權模型。這種授權模型并不能完全的控制訪問,有很多沒有解決的安全漏洞。比如,沒有定義授予用戶權限所需的權限,任何用戶都能夠給他們自己授權來訪問一個表或者數據庫。

    這個模型類似于SQL standards based authorization模型,他們都使用了grant/revoke語句進行訪問控制。但是它的控制策略是不同于 SQL standards based authorization的,而且他們互相也不兼容。這種模型是支持Hive CLI的,但是對于Hive CLI這不是一種安全的授權模型



    日日摸夜夜添夜夜添无码,free性欧美极度另类,超清中文乱码字幕在线观看,真人美女两腿张开露PP图片