1 Ranger安装
这里涉及到3个插件的安装,分别是ranger-hdfs、ranger-hive、ranger-presto,下面将详细叙述安装过程。
1.1 配置RDBMS
首先ranger依赖关系型数据库存储元数据等信息,这里选用MySQL作为元数据存储介质,使用的MySQL版本是8。
RDMS用于存储授权策略,存储Ranger用户/组,存储审核日志。这里使用MySQL作为元数据的存储介质,使用如下命令进行创建db、user、password等:
CREATE DATABASE ranger;ALTER DATABASE ranger CHARACTER SET utf8mb4;CREATE USER 'ranger'@'%' IDENTIFIED BY 'MySQL_123456';GRANT ALL PRIVILEGES ON ranger.* TO 'ranger'@'%' IDENTIFIED BY 'MySQL_123456';
-- 如果是MySQL 8使用如下命令
GRANT ALL PRIVILEGES ON ranger.* TO 'ranger'@'%'; FLUSH PRIVILEGES;
1.2 配置MySQL connector
连接MySQL需要用的driver驱动,需要手动下载jar包。
创建 /usr/share/java/ 目录,把MySQL connector下载到这个目录:
mkdir /usr/share/java
cd /usr/share/java/
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar
ln -s mysql-connector-java-8.0.30.jar mysql-connector-java.jar
1.3 Ranger-admin安装部署
解压编译好的ranger-2.3.0-admin.tar.gz:
$ tar -zxvf ranger-2.3.0-admin.tar.gz -C /opt/software/
$ cd /opt/software/ranger-2.3.0-admin/
修改install.properties文件,这里不使用审计功能,因为需要使用solr等额外组件:
$ vim install.properties
PYTHON_COMMAND_INVOKER=python
DB_FLAVOR=MYSQL # 指明使用数据库类型
SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar #数据库连接驱动
指定数据库root用户链接信息
db_root_user=root
db_root_password=MySQL_123456
db_host=test-hadoop001.lzzg365.com:3306
指定Ranger数据库名称及用户信息
db_name=ranger
db_user=ranger
db_password=MySQL_123456
不需要保存,为空,否则生成的数据库密码为'_'
cred_keystore_filename=
审计日志,如果没有安装solr,对应的属性值为空即可
audit_store=
audit_solr_urls=
audit_solr_user=
audit_solr_password=
audit_solr_zookeepers=
策略管理配置,配置ip和端口,默认即可
policymgr_external_url=http://schedule01:6080
配置hadoop集群的core-site.xml文件,把core-site.xml文件拷贝到该目录
hadoop_conf= /usr/hdp/3.0.1.0-187/hadoop
rangerAdmin、rangerTagSync、rangerUsersync、keyadmin密码配置。
默认为空,可以不配,对应的内部组件该属性也要为空
rangerAdmin_password=Ranger_123456
rangerTagsync_password=Ranger_123456
rangerUsersync_password=Ranger_123456
keyadmin_password=Ranger_123456
自定义日志目录
RANGER_ADMIN_LOG_DIR=/data/log/ranger-admin
执行./setup.sh脚本命令后,如果安装成功后会提示:
Installation of Ranger PolicyManager Web Application is completed.
如下图:
启动ranger-admin:
./ews/ranger-admin-services.sh start
通过jps命令查看:
image.png
通过端口查看进程是否正常启动:
netstat -lntp|grep 6080
image.png
访问地址http://schedule01:6080就可以看到ranger-admin的登录界面,如下:
image.png
登录的用户名和密码是是在install.properties里配置的,这里配置的是admin : Ranger_123456,登录成功后如下:
image.png
1.3.1 注意点
(1) 如果配置多个ranger-admin,在修改install.properties时,注意参数:
setup_mode=SeparateDBA
不需要多次初始化MySQL。
(3) 如果MySQL版本过高则需要配置如下参数,在ranger-admin安装完成后修改conf/ranger-admin-site.xml文件
<property>
<name>ranger.jpa.jdbc.url</name>
<value>jdbc:log4jdbc:mysql://schedule03:3306/ranger?allowPublicKeyRetrieval=true</value>
<description />
</property>
(3) 可以修改脚本,指定MySQL的数据库的serverTimezone参数,需要修改一下数据库相关的脚本。打开dba_script.py和db_setup.py文件,替换如下内容:
-cstring jdbc:mysql://%s/%s%s
将其全部修改为如下所示,主要是添加JDBC的serverTimezone连接参数:
-cstring jdbc:mysql://%s/%s%s?serverTimezone=Asia/Shanghai
或者在ranger-admin安装完成后修改conf/ranger-admin-site.xml文件,如下:
<property>
<name>ranger.jpa.jdbc.url</name>
<value>jdbc:log4jdbc:mysql://192.168.1.11/ranger?serverTimezone=Asia/Shanghai</value>
<description />
</property>
(4) 如果在初始化MySQL数据库时遇到如下错误:
[E] ranger_core_db_mysql.sql file import failed!
[I] Unable to create DB schema, Please drop the database and try again
2022-09-19 17:46:19,724
[E] CORE_DB_SCHEMA import failed!
解决:MySQL中设置
mysql> set global log_bin_trust_function_creators=1;
即可解决。
1.4 ranger-usersync安装部署(非必需)
安装ranger Usersync,需要使用root用户。解压在第 2 步中编译的ranger-2.3.0-usersync.tar.gz:
cd /opt/software/ranger-2.3.0-usersync
编辑install.properties文件,具体内容如下所示:
$ vim install.properties
ranger_base_dir = /opt/software/ranger-2.3.0-usersync
POLICY_MGR_URL = http://schedule01:6080
unix_user=hadoop
unix_group=hadoop
rangerUsersync_password=Ranger_123456
hadoop_conf=/usr/hdp/3.0.1.0-187/hadoop/conf
CRED_KEYSTORE_FILENAME=/opt/software/ranger-2.3.0-usersync/usersync/conf/rangerusersync.jceks
AUTH_SSL_KEYSTORE_FILE=/opt/software/ranger-2.3.0-usersync/usersync/conf/cert/unixauthservice.jks
logdir=/data/log/ranger-usersync
需要使用root用户执行setup.sh脚本命令后,如果成功,会出现如图所示的结果:
[I] Successfully updated password of rangerusersync user
如下图:
启动ranger-usersync:
./ranger-usersync-services.sh start
1.4.1 注意点
如果用户没有同步,是由于默认没有开启自动同步功能,需要修改相关的参数。查看/etc/ranger/usersync/conf/ranger-ugsync-site.xml(install.properties中ranger_base_dir配置)发现ranger.usersync.enabled为false,修改为true。重启ranger-usersync,再看管理界面,已经同步成功。
<property>
<name>ranger.usersync.enabled</name>
<value>true</value>
</property>
<property>
<name>ranger.usersync.cookie.enabled</name>
<value>false</value>
</property>
验证是否安装成功,如图则成功:
image.png
image.png
1.5 ranger-hdfs安装部署
1.5.1 备份Ambari的ranger-hdfs插件
Ambari ranger HDFS插件组件使用内容替换为自定义编译的版本说明:
1、涉及到的主机有hadoop01.ecs.dftd.in、hadoop02.ecs.dftd.in
2、更换文件的目录是/usr/hdp/3.0.1.0-187/hadoop/lib
3、需要更换的文件如下:
ranger-hdfs-plugin-impl
ranger-hdfs-plugin-shim-1.1.0.3.0.1.0-187.jar
ranger-plugin-classloader-1.1.0.3.0.1.0-187.jar
这些文件需要备份,用于后面的恢复等操作。
cd /usr/hdp/3.0.1.0-187/hadoop/lib
sudo mv ranger-hdfs-plugin-impl ranger-hdfs-plugin-shim-1.1.0.3.0.1.0-187.jar ranger-plugin-classloader-1.1.0.3.0.1.0-187.jar /home/hadoop/al/ambari-ranger-hdfs-jars
1.5.2 安装ranger-hfds插件
解压编译好的ranger-2.3.0-hdfs-plugin.tar.gz:
cd /opt/software/ranger-2.3.0-hdfs-plugin
编辑install.properties文件,具体内容如下所示:
$ vim install.properties
配置多个ranger-admin保证高可用
POLICY_MGR_URL= http://schedule01:6080, http://schedule02:6080
REPOSITORY_NAME=hadoopprod
COMPONENT_INSTALL_DIR_NAME=/usr/hdp/3.0.1.0-187/hadoop/conf
启动Ranger HDFS Plugin安装,这里使用的是root用户执行安装脚本:
./enable-hdfs-plugin.sh
执行完成输出如下:
image.png
安装完毕后,需要手动替换ambari原装的ranger-hdfs插件的jar文件等,自定义ranger HDFS插件的目录是/opt/software/ranger-2.3.0-hdfs-plugin,其lib目录下的内容是替换ambari的内容
cd /usr/hdp/3.0.1.0-187/hadoop/lib
sudo cp -r /opt/software/ranger-2.3.0-hdfs-plugin/lib/* .
验证安装成功步骤:
·会发现hadoop安装目录下etc/hadoop下有ranger-hdfs的xml文件
image.png
·会发现share/hadoop/hdfs/lib 下有ranger-hdfs开头的软连接
image.png
image.png
·启动hdfs会发现/etc/ranger/hadoopdev/policycache下有策略缓存文件
image.png
·然后在ranger-admin的audit-->plugin status 查看状态,200即为安装成功
image.png
1.5.3 hdfs-site.xml参数修改
hdfs-site.xml添加如下属性:
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.inode.attributes.provider.class</name>
<value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value>
</property>
<property>
<name>dfs.permissions.ContentSummary.subAccess</name>
<value>true</value>
</property>
安装完毕后需要重新hdfs启动相关进程。
1.5.4 ranger-hdfs插件配置
登录web UI后,点击HDFS plugin 添加按钮,添加服务,输入定义的服务名:hdfsprod(在配置参数时设置的,要保持一致),配置完所有的参数后,点击 Test Connection 执行成功验证是否成功。步骤如下图:
image.png
image.png
image.png
image.png
在配置参数Add New Configurations时,配置的内容如下:
dfs.nameservices : hadoopnamenodeHA
dfs.ha.namenodes.hadoopnamenodeHA : nn1,nn2
dfs.namenode.rpc-address.hadoopnamenodeHA.nn1: hadoop01.ecs.dftd.in:8020
dfs.namenode.rpc-address.hadoopnamenodeHA.nn2: hadoop02.ecs.dftd.in:8020
dfs.client.failover.proxy.provider.hadoopnamenodeHA : org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
1.6 ranger-hive安装部署
1.6.1 安装ranger-hive插件
解压编译好的ranger-2.3.0-hdfs-hive.tar.gz:
cd /opt/software/ranger-2.3.0-hive-plugin
编辑install.properties文件,具体内容如下所示:
$ vim install.properties
配置多个ranger-admin保证高可用
POLICY_MGR_URL= http://schedule01:6080, http://schedule02:6080
REPOSITORY_NAME=hivedev
COMPONENT_INSTALL_DIR_NAME=/usr/hdp/3.0.0.0-1634/hive
使hive-plugin生效,执行时使用的用户是root:# ./enable-hive-plugin.sh
执行完成后结果如下图:
conf/hiveserver2-site.xml修改如下属性:
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.security.authorization.manager</name>
<!—默认值是org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdConfOnlyAuthorizerFactory -->
<value>org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory</value>
</property>
<property>
<name>hive.security.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>
<property>
<name>hive.conf.restricted.list</name>
<value>hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager</value>
</property>
<property>
<name>hive.security.authorization.sqlstd.confwhitelist</name>
<value>mapred.|hive.|mapreduce.|spark.|merge.</value>
</property>
<property>
<name>hive.security.authorization.sqlstd.confwhitelist.append</name>
<value>mapred.|hive.|mapreduce.|spark.|merge.</value>
</property>
安装完毕后需要重启动hive相关进程。
1.6.2 配置ranger-hive插件
登录web UI后,点击HADOOP SQL添加按钮,添加服务,输入定义的服务名:hiveprod(在配置参数时设置的,要保持一致),配置完所有的参数后,点击 Test Connection 执行成功验证是否成功。步骤如下图:
image.png
image.png
1.7 ranger-presto安装
1.7.1 ranger-presto插件的安装
trino 350往后的版本对包空间名称做了更改(io.prestosql -> io.trino)。
将Ranger编译源码得到的ranger-2.3.0-presto-plugin.tar.gz上传到Presto的coordinator服务器节点。
解压编译好的ranger-2.3.0-hdfs-presto.tar.gz:
cd /opt/software/ranger-2.3.0-presto-plugin
注意:这里使用了修改后的ranger-presto插件的jar包,需要替换的jar为
ranger-presto-plugin-2.3.0.jar
ranger-presto-plugin-shim-2.3.0.jar
所以替换相关jar包:
ranger-presto-plugin-2.3.0.jar -> /opt/software/ranger-2.3.0-presto-plugin/lib/ranger-presto-plugin-impl/ranger-presto-plugin-2.3.0.jar
ranger-presto-plugin-shim-2.3.0.jar -> /opt/software/ranger-2.3.0-presto-plugin/lib/ranger-presto-plugin-shim-2.3.0.jar
接着编辑install.properties文件,具体内容如下所示:
$ vim install.properties
配置多个ranger-admin保证高可用
POLICY_MGR_URL= http://schedule01:6080, http://schedule02:6080
REPOSITORY_NAME=prestoprod
COMPONENT_INSTALL_DIR_NAME=/opt/software/presto
虽然文档中没有提及,不设置的话,enable-presto-plugin.sh脚本执行出错
XAAUDIT.SUMMARY.ENABLE=false
使presto-plugin生效,执行脚本时使用的用户是root:
./enable-presto-plugin.sh
命令执行完成后输出如下:
脚本执行没有错误后,需要把/usr/lib/presto/plugin/ranger目录移动到/usr/lib/presto/lib/plugin目录下:
sudo /usr/lib/presto/plugin/ranger /usr/lib/presto/lib/plugin
1.7.2 修改hdfs和presto参数
(1) 修改core-site.xml文件
添加如下参数:
<property>
<name>hadoop.proxyuser.presto.groups</name>
<value> *</value>
</property>
<property>
<name>hadoop.proxyuser.presto.hosts</name>
<value> *</value>
</property>
hadoop.proxyuser.presto.groups和hadoop.proxyuser.presto.hosts参数中的presto指的是运行presto进程的unix用户。
(2) 修改presto catalog文件,一般是hive.properties文件,添加如下属性:
hive.hdfs.impersonation.enabled=true
表示presto可以模拟hdfs登录用户。
安装完毕后需要重新presto启动相关进程。
1.7.3 配置ranger-presto插件
登录web UI后,点击PRESTO添加按钮,添加服务,输入定义的服务名:prestoprod(在配置参数时设置的,要保持一致),配置完所有的参数后,点击 Test Connection 执行成功验证是否成功。步骤如下图:
image.png
如果没有认证时,参数Password必须要是empty,否则会在Test时抛出错误。
image.png
1.7.4 安装过程中的错误
如果安装过程中出现如下错误,则需要把缺失的jar包复制到install/lib/目录:
image.png
这个提示是说明commons-lang-2.6.jar没有包含org.apache.commons.lang3.StringUtils类,而这个类在jar commons-lang3中。
wget https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar
如果出现这个错误,该类处于Apache的commons-compress包中,把commons-compress jar包放到install/lib/目录:
wget https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar
参考
https://www.cnblogs.com/swordfall/p/11887317.html
https://juejin.cn/post/6844904159930482696
https://blog.51cto.com/zero01/2549450
https://jiezhi.github.io/2021/06/29/ranger-admin/
https://www.cxymm.net/article/sinat_28007043/105649662
https://blog.csdn.net/Happy_Sunshine_Boy/article/details/103369365
https://www.helloworld.net/p/2301106303
https://www.jianshu.com/p/888186c38827
网友评论