zoukankan      html  css  js  c++  java
  • hbase 整合ranger

    一、安装hbase插件

    1、解压安装插件

    target目录下拷贝ranger-2.1.0-SNAPSHOT-hbase-plugin.tar.gzhbase集群,你的这个包的版本可能跟我不一致。

    hbase集群解压hbase插件包

    # tar zxvf ranger-2.1.0-SNAPSHOT-hbase-plugin.tar.gz -C /data1/hadoop

    2、配置install.properties文件

    修改如下配置:

    POLICY_MGR_URL=http://192.168.4.50:6080

    REPOSITORY_NAME=hivedev

    COMPONENT_INSTALL_DIR_NAME=/data1/hadoop/hbase   #hbase安装目录

    XAAUDIT.SOLR.ENABLE=true

    XAAUDIT.SOLR.URL=http://192.168.4.50:6083/solr/ranger_audits

    CUSTOM_USER=hduser   

    CUSTOM_GROUP=hduser

    3、启动插件(root权限)

    #sudo /data1/hadoop/ranger-2.1.0-hbase-plugin/enable-hbase-plugin.sh

    启动插件以后,在hbase-site.xml文件的最后默认会添加如下配置:

    <property>

        <name>hbase.security.authorization</name>

        <value>true</value>

    </property>

    <property>

        <name>hbase.coprocessor.master.classes</name>

       <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>

    </property>

    <property>

        <name>hbase.coprocessor.region.classes</name>

        <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>

    </property>

    4、启动hbase

    # start-hbase.sh

    5、前台配置

    (1) 添加服务

     

     

    点击+号按钮,添加服务,服务名需要与install.properties文件里面配置REPOSITORY_NAME属性值的一致

    服务添加完成以后,默认的hduser用户拥有全部权限。

    6、测试

    (1) 使用hduser操作

    使用hduser用户,进入到hase客户端,创建数据库,表,插入数据

    hbase(main):015:0> create 'test','f1'

    hbase(main):016:0> list

    TABLE                                                                                                                                                                                                                                                                         

    test                                                                                                                                                                                                                                                                          

    1 row(s)

    Took 0.0123 seconds                                                                                                                                                                                                                                                           

    => ["test"]

    hbase(main):017:0> put 'test','r1','f1:c1','yjt'

                                                                                                                                                                                                                                                             

    hbase(main):018:0> get 'test','r1'

    COLUMN                                                               CELL                                                                                                                                                                                                     

     f1:c1                                                               timestamp=1573457130189, value=yjt                                                                                                                                                                       

    1 row(s)

    Took 0.0700 seconds  

    (2) 使用yjl用户,测试是否拥有权限

     

    说明当前的这个用户是拥有权限的。

                                                                                                                                                                                                              

    前台配置策略,限制yjl这个用户对test表的读取权限

     

    右上角点击添加策略

     

    添加deny 权限

     

    (3) 测试yjl用户是否有读取权限

     

    从上可以看出来,权限被拒绝。

    (4) 测试write权限

     

    写数据到test表,写入拒绝。

    在刚才的策略中为yjl这个用户添加write权限,如下:

     

    保存,客户端测试yjl这个用户是否有写入权限:

     

    说明配置成功。

    这里有三点需要注意:

    1. 版本是否匹配?

    ranger2.x里面使用的hbase版本是2.0.2,所以一开始我在使用hbase1.3.x或者1.4.x的时候,在启动hbase时,报找不到类错误,如下:

    2019-11-11 13:50:11,621 FATAL [yjt:16000.activeMasterManager] master.HMaster: The coprocessor org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor threw java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/RegionCoprocessor

    java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/RegionCoprocessor

    解决办法就是更换hbase版本,换到2.x,或者降低ranger版本

    1. Hbase2.x版本的问题

    在更换2.x版本以后,在启动hbase的时候,继续报错,报错如下:

    2019-11-11 14:53:57,504 ERROR [Thread-14] master.HMaster: ***** ABORTING master yjt,16000,1573455225686: Unhandled exception. Starting shutdown. *****

    java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.

    解决办法:

    hbase-site.xml配置文件添加如下配置:

    <property>

      <name>hbase.unsafe.stream.capability.enforce</name>

      <value>false</value>

    </property>

    1. Ranger-admin版本与hbase或者其他插件版本不一致可能导致问题。

    Ranger-admib我使用的版本是2.1.0,而我在测试hbase的时候,hbase ranger插件我使用的是2.0.0,在启动hbase的时候,包如下错误:

    2019-11-11 14:31:28,206 WARN  [PEWorker-15] procedure.CreateTableProcedure: Retriable error trying to create table=hbase:namespace state=CREATE_TABLE_ADD_TO_META

    org.apache.hadoop.hbase.security.AccessDeniedException: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user hduser',action: put, tableName:hbase:meta, family:info, column: state

            at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:589)

    这样会导致权限控制失败,所以ranger-admin与各插件直接需要版本一致,不要给自己找太多麻烦。

  • 相关阅读:
    一致性哈希的理解与实践
    nil in Go
    为什么Go没有math.Min/Max(int, int) 函数?
    What happens when I type kubectl run?
    kubelet简要分析
    编译安装nginx和模块
    nginx与tengine添加check模块(nginx_upstream_check_module)
    多台ESXI 6.5 添加 iSCSI 共享存储 --centos 7.4 作为target
    Cannot open the disk '/vmfs/volumes/5e97f429-a56d6ea0-1ef3-000c29a09445/oracle_node1/oracle_node1_1.vmdk' or one of the snapshot disks it depends on.
    RabbitMQ windows2016 镜像模式 haproxy+keepalived
  • 原文地址:https://www.cnblogs.com/yjt1993/p/11837582.html
Copyright © 2011-2022 走看看