MRS 2.x版本集群安装Ranger 2.0.0
1 安装前准备
1.1 安装mysql
本文操作系统: CentOS 7.2.1511 x86_64
MySQL 版本: 5.7.13
1.1.1 卸载系统自带的 mariadb-lib
[root@centos-linux ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@centos-linux ~]# rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
1.1.2 下载 rpm 安装包
去官网找到最新的 rpm 集合包。现在最新的是 mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
复制其下载地址,在服务器下载 (或者本地下载了上传至服务器)。
[root@centos-linux ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
然后解压
[root@centos-linux ~]# ls
mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
[root@centos-linux ~]# tar xvf mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
mysql-community-test-5.7.13-1.el7.x86_64.rpm
mysql-community-embedded-5.7.13-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.13-1.el7.x86_64.rpm
mysql-community-server-5.7.13-1.el7.x86_64.rpm
mysql-community-client-5.7.13-1.el7.x86_64.rpm
mysql-community-common-5.7.13-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.13-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.13-1.el7.x86_64.rpm
mysql-community-devel-5.7.13-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.13-1.el7.x86_64.rpm
mysql-community-libs-5.7.13-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.13-1.el7.x86_64.rpm
1.1.3 安装
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
[root@centos-linux ~]# rpm -ivh mysql-community-common-5.7.13-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-libs-5.7.13-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-client-5.7.13-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-server-5.7.13-1.el7.x86_64.rpm
1.1.4 数据库初始化
在 *nix 系统中,为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化
mysqld --initialize --user=mysql
如果是以 mysql 身份运行,则可以去掉 --user
选项。
另外 --initialize
选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,而使用 --initialize-insecure
命令则不使用安全模式,则不会为 root 用户生成一个密码。
这里演示使用的 --initialize
初始化的,会生成一个 root 账户密码,密码在log文件里
[root@centos-linux ~]# cat /var/log/mysqld.log
2016-07-16T07:56:38.282824Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-07-16T07:56:38.422114Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-07-16T07:56:38.449315Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-07-16T07:56:38.457910Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d3261dbf-4b2a-11e6-86ef-001c4260563f.
2016-07-16T07:56:38.458976Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-07-16T07:56:38.459524Z 1 [Note] A temporary password is generated for root@localhost: hm9dKgzQdm:W
上图里的最后一行则给出了生成的密码,现在就可以启动数据库了,然后使用上面的密码登陆。
[root@centos-linux ~]# systemctl start mysqld
[root@centos-linux ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.13
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
1.1.5 修改 root 密码
该密码被标记为过期了,如果想正常使用还需要修改密码
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
以前的 password()
函数将会被抛弃,官方建议使用下面的命令来修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
同时,如果你设置的密码过于简单也会报错。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
1.2 编译ranger
Ranger下载地址: wget https://downloads.apache.org/ranger/2.0.0/apache-ranger-2.0.0.tar.gz
1.2.1 配置环境
编译需要工具:jdk、maven、git、python、gcc
1)安装git
yum install -y git
2)下载maven,jdk,并解压到/opt/build_tools目录下。
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
3)配置环境变量
修改/etc/profile/配置文件
export JAVA_HOME=/opt/build_tool/jdk1.8.0_261
export M2_HOME=/opt/build_tool/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1.2.2 编译ranger
下载ranger并解压到/opt/ranger目录下。本步骤需要从外网下载依赖包,该编译节点需要绑定EIP,编译时间较长,可以通过切换maven源来调整编译时间。
cd /opt/ranger/apache-ranger-2.0.0
mvn clean compile package assembly:assembly install -DskipTests -Drat.skip=true
待编译完成后,会在target的目录下看到编好的tar包
2 安装Ranger
2.1 安装RangerAdmin
将编译好的ranger-2.0.0-admin.tar.gz包拷贝至集群master节点,如master1。
2.1.1 解压ranger admin包
mkdir /ranger
tar –zxvf ranger-2.0.0-admin.tar.gz –C /ranger
注:文件目录属组为omm:wheel
2.1.2 修改配置文件install.properties
1) 在步骤1中安装的mysql中,新建数据库rangermeta
2) 修改ranger admin中的install.properties
DB_FLAVOR=MYSQL
SQL_CONNECTOR_JAR=/ranger/mysql-connector-java-5.1.47.jar (jar包需单独下载)
db_root_user=root
db_root_password=Huawei@123
db_host=mysqlIP:3306
db_name=rangermeta
db_user=root
db_password=Huawei@123
注释掉audit_store=solr这一行 (如果需要审计日志的话,可单独参考资料配置)
注:如果要将ranger元数据对接到RDS的mysql数据库,需要将上述配置地址指定RDS实例地址,
并修改dba_script.py脚本中grant_xa_db_user和create_rangerdb_user方法,将hosts_arr =["%", "localhost"]修改为hosts_arr =["%"]
2.1.3 安装rangerAdmin
1) export 环境变量
export RANGER_ADMIN_CONF=/ranger/ranger-2.0.0-admin
export RANGER_ADMIN_HOME=/ranger/ranger-2.0.0-admin
2) 执行 sh /ranger/ranger-2.0.0-admin/setup.sh
3) 启动ranger admin
sh /ranger/ranger-2.0.0-admin/ews/start-ranger-admin.sh
4) ps –ef | grep ranger 查看ranger admin进程 和http端口6080是否已启动
2.1.4 Web登录验证
在浏览器中输入:http://EIP:6080/ user:admin password: admin EIP为rangeradmin安装节点绑定的弹性公网IP
2.2 安装RangerUsersync
将编译好的ranger-2.0.0-usersync.tar.gz包拷贝至集群master节点,如master1
2.2.1 安装RangerUsersync
解压tar –zxvf ranger-2.0.0-usersync.tar.gz –C /ranger
2.2.2 修改install.properties
进入usersync安装目录,修改install.properties,同步MRS Manager上的用户
POLICY_MGR_URL= http://localhost:6080
SYNC_SOURCE = ldap
MIN_UNIX_USER_ID_TO_SYNC = 1
MIN_UNIX_GROUP_ID_TO_SYNC = 1
SYNC_INTERVAL = 1
CRED_KEYSTORE_FILENAME=/ranger/usersync/conf/rangerusersync.jceks
AUTH_SSL_ENABLED=true
AUTH_SSL_KEYSTORE_FILE=/ranger/usersync/conf/cert/unixauthservice.jks
ranger_base_dir = /ranger
SYNC_LDAP_URL = ldaps://192.168.0.121:21780 (可ps –ef | grep ldaps获得)
SYNC_LDAP_BIND_DN = cn=root,dc=hadoop,dc=com
SYNC_LDAP_BIND_PASSWORD = LdapChangeMe@123
SYNC_LDAP_SEARCH_BASE = dc=hadoop,dc=com
SYNC_LDAP_USER_SEARCH_BASE = ou=Peoples,dc=hadoop,dc=com
SYNC_LDAP_USER_OBJECT_CLASS = account
logdir=/ranger/ranger-2.0.0-usersync/logs
SYNC_GROUP_SEARCH_ENABLED=true
SYNC_GROUP_SEARCH_BASE=ou=Groups,dc=hadoop,dc=com
SYNC_GROUP_SEARCH_SCOPE= sub
SYNC_GROUP_OBJECT_CLASS=posixGroup
SYNC_GROUP_NAME_ATTRIBUTE=cn
SYNC_GROUP_MEMBER_ATTRIBUTE_NAME=memberUid
注:如果ranger安装在集群外的ECS上,需要在集群master节点先生成truststore.jks,然后将其拷贝到ECS节点,并在install.properties文件中配置一下配置项:
生成truststore.jks命令,用户可自己指定:
keytool -import -trustcacerts -alias MyLdap -file /opt/Bigdata/MRS_2.1.1/install/FusionInsight-ldapclient-2.5.0/ldapclient/local/cert/cacert.pem -keystore /home/ranger/truststore.jks -storepass ranger
添加配置:
AUTH_SSL_TRUSTSTORE_FILE=/etc/ranger/usersync/conf/truststore.jks
AUTH_SSL_TRUSTSTORE_PASSWORD=ranger
2.2.3 启动RangerUsersync
1) 配置环境变量
export RANGER_USERSYNC_HOME=/ranger/ranger-2.0.0-usersync
2) 修改脚本ranger-usersync-services.sh
在JAVA_OPTS中添加 -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
3) 执行sh /ranger/ranger-2.0.0-usersync/setup.sh
4) 启动usesync进程
sh /ranger/ranger-2.0.0-usersync/start.sh
5) ps –ef | grep ranger 查看ranger usersync进程 和http端口5151是否已启动
2.2.4 查看用户是否同步
在ranger webUI中settings页签查看用户是否同步成功
3 安装组件plugin
3.1 安装hive plugin
将编译好的ranger-2.0.0-hive-plugin.tar.gz拷贝至集群所有hiveserver所在节点,解压至/ranger/目录下
3.1.1 修改配置
1) 在MRS Manager页面添加或者修改如下配置项,保存配置暂不重启。
1. Key:hive.security.authorization.enabled
Value:true
2. Key:hive.security.authorization.manager
Value:org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
3. Key:hive.security.authenticator.manager
Value:org.apache.hadoop.hive.ql.security.SessionStateUserGroupAuthenticator
4. Key:hive.conf.restricted.list
Value:hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager
2) 修改ranger-1.0.1-hive-plugin的install.properties
POLICY_MGR_URL=http://ip:6080
REPOSITORY_NAME=hivedev
COMPONENT_INSTALL_DIR_NAME=/opt/Bigdata/MRS_2.1.1/install/FusionInsight-Hive-3.1.0/hive-3.1.0
3) 执行./enable-hive-plugin.sh 进行安装
4) 将/opt/Bigdata/MRS_2.1.1/install/FusionInsight-Hive-3.1.0/hive-3.1.0/conf/目录下ranger-*.xml拷贝至/opt/Bigdata/MRS_2.1.1/1_x_HiveServer/etc/目录下,路径根据实际情况填写,注意文件权限和该路径下其他文件保持一致
5) 在MRS Manager上重启hive服务
6) 启动完成后,ranger会在/etc/目录下创建ranger/hivedev/目录用于存放配置的权限信息,请确保该目录omm用户可访问。
3.1.2 在Ranger webUI配置hive策略
1)在ServiceManager HIVE中,新增repository, 即保存权限控制策略的仓库。命名为“hivedev”,注意:这里仓库的命名要和 hive plugin install.properties中配置的仓库名称一致。
2) 编辑hivedev,主要填入下图中红框标注的内容。用户名和密码随意填写。Jdbc.url要填所控制的集群连接hive组件的url。完成之后,点击testConnection测试连通性,最后保存。
3)在hivedev中新增控制策略Test。编辑策略主要填入策略名称,数据库、具体的表以及表对应的列,在Allow Conditions中配置具体用户对表的控制权限,并保存。除了配置Allow Conditions,也可配置Deny Conditions,这取决于用户的使用场景。
3.1.3 验证上述配置的策略是否生效
1) 先以root用户通过beeline连接到hive
2) 通过ranger中配置的用户连接到hive
Ø !connect jdbc:hive2://192.168.2.29:2181,192.168.2.129:2181,192.168.2.73:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
Ø 输入用户名和密码登录
3) 执行表中配置的允许操作和不允许操作,查看结果。
3.2 安装hbase plugin
将编译好的ranger-2.0.0-hbase-plugin.tar.gz拷贝至集群所有HMaster和Regionserver节点,解压至/ranger/目录下,注意ranger目录下文件属组为omm:wheel
3.2.1 修改配置
1) 修改install.properties
POLICY_MGR_URL=http://ip:6080
REPOSITORY_NAME=hbasedev
COMPONENT_INSTALL_DIR_NAME=/opt/Bigdata/MRS_2.1.1/install/FusionInsight-HBase-2.1.1.0101/hbase
2) 在MRS Manager页面添加或者修改如下配置项,保存配置暂不重启
1. Key:hbase.coprocessor.master.classes
Value:org.apache.hadoop.hbase.hindex.server.master.HIndexMasterCoprocessor,org.apache.hadoop.hbase.security.access.ReadOnlyClusterEnabler, org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor
2. Key:hbase.security.authorization
Value:true
3) 在HMaster和regionServer节点执行sh ranger-2.0.0-hbase-plugin/enable-hbase-plugin.sh 进行安装
4) 将/opt/Bigdata/MRS_2.1.1/install/FusionInsight-HBase-2.1.1.0101/hbase/conf/目录下ranger拷贝至/opt/Bigdata/MRS_2.1.1/1_x_HMaster/etc/或者/opt/Bigdata/MRS_2.1.1/1_x_RegionServer/etc/目录下,注意文件权限要和其他文件保持一致
5) 重启HBase服务
6) 启动完成后,ranger会在/etc/目录下创建ranger/hbasedev/目录用于存放配置的权限信息,请确保该目录omm用户可访问。
3.2.2 在Ranger webUI上配置hbase策略
1) 在ServiceManager HBASE中,新增repository, 即保存权限控制策略的仓库。命名为“hbasedev”,注意:这里仓库的命名要和 hbase plugin install.properties中配置的仓库名称一致。
2) 编辑hbasedev。用户名和密码随意填写。hbase.zookeeper.quorum 要填所控制的集群的zk地址。完成之后,点击testConnection测试连通性,最后保存。
3)在hbasedev中新增控制策略Test。编辑策略,并在Allow Conditions中配置具体用户对表的控制权限后保存。除了配置Allow Conditions,也可配置Deny Conditions,这取决于用户的使用场景。
3.2.3 验证上述配置的策略是否生效
用yzh用户连接到hbase shell,执行语句查看结果
3.3 安装hdfs plugin
将编译好的ranger-2.0.0-hdfs-plugin.tar.gz拷贝至集群所有NameNode所在节点,解压至/ranger/目录下
3.3.1 修改配置
1) 在MRS Manager页面添加或者修改如下配置项,保存配置暂不重启。
1. Key:dfs.namenode.inode.attributes.provider.class
Value:org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer
2. Key:dfs.permissions.superusergroup
Value: ----该参数置空
3. Key:dfs.permissions.enabled
Value:true
2) 修改ranger-1.0.1-hdfs-plugin的install.properties
POLICY_MGR_URL=http://ip:6080
REPOSITORY_NAME=hadoopdev
COMPONENT_INSTALL_DIR_NAME= /opt/Bigdata/MRS_2.1.1/install/FusionInsight-Hadoop-3.1.1/hadoop/
3) 执行sh ranger-2.0.0-hdfs-plugin/enable-hdfs-plugin.sh 进行安装
4) 将/opt/Bigdata/MRS_2.1.1/install/FusionInsight-Hadoop-3.1.1/hadoop/etc/hadoop/目录下ranger*.xml拷贝至/opt/Bigdata/MRS_2.1.1/1_9_NameNode/etc/目录下,注意文件权限要和其他文件保持一致
5) 在MRS Manager上重启hdfs服务
6) 启动完成后,ranger会在/etc/目录下创建ranger/hadoopdev/目录用于存放配置的权限信息,请确保该目录omm用户可访问。
7) 然后前往ranger webui配置hdfs策略
3.3.2 在Ranger webUI上配置hdfs策略
1)在ServiceManager HDFS中,新增repository, 即保存权限控制策略的仓库。命名为“hadoopdev”,注意:这里仓库的命名要和 hdfs plugin install.properties中配置的仓库名称一致。
2) 编辑hadoopdev。用户名和密码随意填写。完成之后,点击testConnection测试连通性,最后保存。
3)在hadoopdev中新增控制策略Test。在Allow Conditions中配置具体用户对路径的控制权限,并保存。除了配置Allow Conditions,也可配置Deny Conditions,这取决于用户的使用场景。
3.3.3 验证上述配置的策略是否生效
如图为在ranger上配置权限前后访问hdfs test目录的结果
- 点赞
- 收藏
- 关注作者
评论(0)