王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

登录成功后,进入到首页,如下:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png


Ranger HDFS Plugin安装

解压hdfs plugin的安装包到合适的目录下:

[root@hadoop01 ~]# mkdir /usr/local/ranger-plugin
[root@hadoop01 ~]# tar -zxvf /usr/local/src/ranger/target/ranger-3.0.0-SNAPSHOT-hdfs-plugin.tar.gz -C /usr/local/ranger-plugin
[root@hadoop01 ~]# cd /usr/local/ranger-plugin/
[root@hadoop01 /usr/local/ranger-plugin]# mv ranger-3.0.0-SNAPSHOT-hdfs-plugin/ hdfs-plugin

进入解压后的目录,目录结构如下:

[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# ls
disable-hdfs-plugin.sh  enable-hdfs-plugin.sh  install  install.properties  lib  ranger_credential_helper.py  upgrade-hdfs-plugin.sh  upgrade-plugin.py
[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# 

配置安装选项:

[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# vim install.properties
# 指定ranger admin服务的访问地址
POLICY_MGR_URL=http://192.168.243.142:6080
# 配置仓库配置,可自定义
REPOSITORY_NAME=dev_hdfs
# 配置hadoop的安装目录
COMPONENT_INSTALL_DIR_NAME=/usr/local/hadoop-2.6.0-cdh5.16.2
# 配置hdfs的目录
XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit
XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd%

# 配置用户和用户组
CUSTOM_USER=root
CUSTOM_GROUP=root

执行如下脚本开启hdfs-plugin:

[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# ./enable-hdfs-plugin.sh 

如果报如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/tar/TarArchiveInputStream

拷贝缺失的jar包到install/lib/目录下:

[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# cp /usr/local/ranger-3.0.0-SNAPSHOT-admin/ews/lib/commons-lang3-3.3.2.jar ./install/lib/
[root@hadoop01 /usr/local/ranger-plugin/hdfs-plugin]# cp /usr/local/ranger-3.0.0-SNAPSHOT-admin/ews/lib/commons-compress-1.20.jar ./install/lib/

脚本执行成功后,会输出如下内容:

Ranger Plugin for hadoop has been enabled. Please restart hadoop to ensure that changes are effective.

重启Hadoop:

[root@hadoop01 ~]# stop-all.sh 
[root@hadoop01 ~]# start-all.sh

验证权限控制

到Ranger Admin上添加hdfs service,这里的Service Name需与配置文件中的配置所对应上:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

填写相应信息:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

填写完成后,到页面底部点击“Test Connection”测试能否正常连接,确认可以正常连接后点击“Add”完成新增:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

在hdfs中创建一些测试目录和文件:

[root@hadoop01 ~]# hdfs dfs -mkdir /rangertest1
[root@hadoop01 ~]# hdfs dfs -mkdir /rangertest2
[root@hadoop01 ~]# echo "ranger test" > testfile
[root@hadoop01 ~]# hdfs dfs -put testfile /rangertest1
[root@hadoop01 ~]# hdfs dfs -put testfile /rangertest2

然后到Ranger Admin上添加Ranger的内部用户,“Settings” -> “Add New User”,填写用户信息:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

接着添加权限策略,“Access Manager” -> “dev_hdfs” -> “Add New Policy”,配置权限策略所作用的用户、目录等信息:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

拉到底部点击“Add”完成添加后,可以看到新增了一条策略配置:

编译安装大数据平台权限管理组件 – Apache Ranger 3.x

image.png

回到操作系统,切换到hive用户,测试能否正常读取目录、文件:

[root@hadoop01 ~]# sudo su - hive
上一次登录:一 11月  9 21:08:34 CST 2020pts/3 上
[hive@hadoop01 ~]$ hdfs dfs -ls /rangertest1
Found 1 items
-rw-r--r--   1 root supergroup         12 2020-11-11 16:26 /rangertest1/testfile
[hive@hadoop01 ~]$ hdfs dfs -cat /rangertest1/testfile
ranger test
[hive@hadoop01 ~]$ 

测试写操作,此时会发现能够正常往rangertest1目录添加文件,但往rangertest2目录添加文件就会报错,因为我们只赋予了rangertest1目录的读写权限:

[hive@hadoop01 ~]$ hdfs dfs -put testfile2 /rangertest1
[hive@hadoop01 ~]$ hdfs dfs -put testfile2 /rangertest2
put: Permission denied: user=hive, access=WRITE, inode="/rangertest2":root:supergroup:drwxr-xr-x
[hive@hadoop01 ~]$ 

至此,Ranger对HDFS的权限控制也验证通过了。除此之外,你也可以进行其他的测试,其他组件的ranger plugin也是类似的,在本文中就不一一演示了。

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。