Apache Ranger - Hive Plugin

2020-09-05 Hadoop實操

作者:Eric Lin (林晨輝), Cloudera高級售後技術支持工程師。


在閱讀本文前,建議先閱讀前面的文章:

《0741-什麼是Apache Ranger - 1》

《0742-什麼是Apache Ranger - 2》

《0745-什麼是Apache Ranger - 3》

《0800-什麼是Apache Ranger - 4 - Resource vs Tag Based Policies》


本文主要介紹Ranger中的Hive Plugin,當你嘗試在Hive中創建或修改table時,Ranger是如何工作的。Ranger如果要使用策略對組件進行授權,必須在這些組件上安裝Ranger Plugin。比如為了將授權應用於Hive實體,如DB,Table或Columns,你必須為Hive服務安裝Ranger Plugin。實際情況你可能還需要為HDFS,HBase,Kafka安裝插件,但本文重點介紹Hive Plugin。


那麼什麼是插件,它有什麼作用呢?Ranger的Hive插件實際上是在HiveServer2中附上一小段代碼,可以執行Ranger策略正常運行所需的額外功能。如下圖所示是每個組件之間的關係:


當你在Beeline中運行CREATE TABLE語句創建新表時,它將向HiveServer2提交查詢,HiveServer2在運行該查詢之前,它會先檢查緩存的策略文件(圖中所示為1),判斷提交查詢的用戶有具有執行該操作的權限,才會最終提交查詢並創建表。


成功創建新表後,Ranger的Hive插件將觸發兩件事:

  • 將審核事件發送到Solr和/或HDFS,取決於配置,圖中所示為2
  • 將Kakfa事件發送到Topic 「ATLAS_HOOK」,圖中所示為3,以記錄已創建新實體,因此Ranger的Hive Plugin實際上是Kafka中「ATLAS_HOOK」 Topic的Producer


要使上面兩個操作都能執行,需要在Ranger中設置策略以確保hive用戶可以寫數據到Kafka的ATLAS_HOOK Topic中,同時hive用戶需要有權限在Solr中創建索引並寫入數據到HDFS,假設Hive的模擬(Impersonation)已經關閉。否則上面兩個操作會失敗,如果失敗了可以查看HiveServer2的日誌,默認保存在/var/log/hive中。

一旦事件到達Kafka的「 ATLAS_HOOK」,Atlas作為該Topic的consumer,會將這些數據保存到資料庫,圖中所示為4,以便Atlas管理員可以在Web UI中看到此新實體,查看數據溯源信息,以及附加的Tag/Classifications等。

一旦Audit事件到達Solr並且正確的創建了索引,管理員可以在Ranger web UI的Audits頁面查看到該審計信息,圖中所示為5.

請注意,HDFS中的數據僅用於備份,任何服務都不會使用,默認情況下,Solr中的審計數據將在90天後過期。


參考前面的文章《什麼是Apache Ranger - 4 - Resource vs Tag Based Policies》,我們知道什麼是標籤策略以及它是如何工作的。Atlas管理員可以create/modify/delete標籤,如果做了該操作,所有跟Tags/Classifications相關的實體都將作為事件發送到Kafka的「ATLAS_ENTITIES」 Topic中,如上圖所示為6,同時這些實體也會被發送到Ranger TagSync服務,圖中所示為7,並且會保存到Ranger的資料庫中,圖中所示為8。同樣這些操作需要配置Ranger策略,以使atlas用戶有權限寫數據到Kafka的ATLAS_ENTITIES Topic中。


Ranger還具有一個UserSync服務,它可以配置同步LDAP中的user/group信息並將其保存到Ranger的資料庫中。


一旦在Ranger中更新了標籤信息,用戶和組以及所有其他基於資源的策略都已正確同步,HiveServer2中的Hive插件會將其拉到本地緩存中,默認情況下策略會每30秒同步一次,圖中所示為9,以便新的請求會採用新的策略。這樣如果Ranger服務掛了,客戶端如Hive的授權依舊可以正常執行。等Ranger服務恢復,Hive插件則會恢復定期去Ranger同步策略。


最終隨著用戶在Hive中創建或更新資料庫,表或列,該循環又會往復一遍。


原文參考:

https://cloudera.ericlin.me/2020/05/introduction-to-ranger-part-v-hive-plugin/

相關焦點

  • Ranger Hive-HDFS ACL同步
    在啟動RMS並從Hive Metastore(HMS)運行第一次同步之前,應該先配置Ranger策略(具有rangerrms 用戶訪問權限)。 Ranger RMS ACL同步功能支持單個邏輯HMS,以評估通過Hive權限訪問HDFS。這與CDH中的Sentry實現邏輯保持一致。
  • Hive學習筆記,看懂 Hive
    Hive安裝Hive安裝地址1.Hive官網地址http://hive.apache.org/2.文檔查看地址https://cwiki.apache.org/confluence/display/Hive/GettingStarted3.下載地址http
  • Apache Hive 0.7.1 發布,數據倉庫平臺
    通過hive,我們可以方便地進行ETL的工作。hive定義了一個類似於SQL的查詢語言:HQL,能 夠將用戶編寫的QL轉化為相應的Mapreduce程序基於Hadoop執行。 Hive 0.7.1 下載:http://hive.apache.org/releases.html#Download 版本更新日誌:** Bug    * [HIVE-2054] - Exception on windows when using the jdbc driver.
  • spark-sql無法連接hive元資料庫
    :498) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3632) at org.apache.hadoop.hive.ql.metadata.Hive.getAllFunctions(Hive.java:3894) at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions
  • HIVE的安裝與配置
    (2)hive官網地址:http://hive.apache.org/(3)hive下載地址:http://archive.apache.org/dist/hive/(4)我的hive版本是下載的apache-hive-1.2.1-bin.tar.gz(5)mysql版本:MySQL-5.5.60-1.el6.x86_64.rpm-bundle.tar
  • hbase壓縮以及hive集成映射
    Hive 2.x will be compatible with HBase 1.x and higher如果版本不兼容,考慮編譯hive的版本apache-hive-1.2.1-src.tar.gz我這裡有一個編譯好的apache-hive-1.2.1-hbase.tar.gz解壓縮進入目錄hive和
  • HiveServer2 3.1.2安裝
    由於hiveserver2默認使用zookeeper,所以當配置不要zk的得注意以下事項(其他公用配置就不列出了):1、hive.server2.support.dynamic.service.discovery改為false,不然啟動時會啟動zk2、hive.metastore.pre.event.listeners
  • Hive WordCount實現示例
    加載數據將文件數據加載到hive表中。> load data local inpath '/tmp/foobar.txt' into table tbl_line;加載的數據會放到Hadoop中/data/hive/warehouse/test.db目錄下,/data/hive/warehouse是hive-site.xml配置的hive.metastore.warehouse.dir
  • hive權限管理:Metastore存儲授權
    Metastore安全參數配置:要啟用Hive metastore伺服器安全性,請在hive-site.xml中設置這些參數hive.metastore.pre.event.listeners設置為org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener
  • 使用sqoop在MySQL、hadoop、hive間同步數據
    /usr/local/service/sqoop/bin/sqoop-import \--connect jdbc:mysql://$mysqlIP/test --username root -P --table sqoop_test \--hive-import --hive-database db_sqoop_test --hive-table sqoop_test
  • hive學習筆記之十一:UDTF
    ;import org.apache.hadoop.hive.ql.exec.UDFArgumentException;import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;import org.apache.hadoop.hive.ql.metadata.HiveException;import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF
  • hive學習筆記之九:基礎UDF
    ><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  • Hive權限管理:基於存儲授權
    Hive的默認權限模式Hive的默認授權模式支持基於用戶、組和角色的傳統RDBMS風格的授權,並授予他們在資料庫或表上執行操作的權限,詳細描述在hive授權(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)和hive廢棄的權限模式。
  • HBase基礎環境搭建之Hive和Sqoop安裝
    準備工具解壓縮文件tar -zxvf apache-hive-1.2.1-hbase.tar.gz -C /opt/bigdata/tar -zxvf sqoop-1.4.7.tar.gz -C /opt/bigdata/安裝mysql檢查下是否已下載還有卸載殘留rpm -qa | grep
  • 大數據——hive mapjoin識別小表錯誤造成異常
    >.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.RandomAccessFileManager$RandomAccessFileManagerFactory@775794e4] unable to create manager for [/tmp/hive/operation_logs
  • Hive的學習,Hive的查詢與自定義函數
    (default)> set hive.enforce.bucketing=true;hive (default)> set mapreduce.job.reduces=-1;hive (default)> insert into table stu_buckselect id, name from stu;
  • HIVE命令
    hive (default)> create database db_hive;(2)避免要創建的資料庫已經存在錯誤,增加 if not exists 判斷。hive (default)> create database db_hive;FAILED: Execution Error, return code 1 from org.apache.
  • 詳解Apache Hudi如何配置各種類型分區
    hoodie.datasource.hive_sync.partition_extractor_class配置為org.apache.hudi.hive.MultiPartKeysValueExtractor;Hudi同步到Hive創建的表如下CREATE EXTERNAL
  • Hive JDBC操作
    -- hive用來存儲不同階段的map/reduce的執行計劃的目錄,同時也存儲中間輸出結果 ,默認是/tmp/<user.name>/hive,我們實際一般會按組區分,然後組內自建一個tmp目錄存>儲 --> <property> <name>hive.exec.local.scratchdir</name>
  • Win10系統下Hadoop和Hive開發環境搭建填坑指南
    /hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gzApache Hive 3.1.2:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gzApache Hive 1.2.2 src:https://mirrors.bfsu.edu.cn