本文汇总了Ranger使用时的常见问题。
为什么Ranger UserSync无法自动同步Linux/LDAP用户?
-
问题分析:该问题主要存在于EMR-3.23.0及之前的版本。
-
解决方法:登录集群的emr-header-1节点,手动修改配置文件/etc/ecm/ranger-usersync-conf/ranger-ugsync-site.xml中ranger.usersync.enabled的参数值为true,然后在EMR控制台重启RangerUserSync组件。
如何将Unix用户同步到Ranger UI的Policy中?
在同一个集群中,无法同时将LDAP用户和Unix用户同步到Ranger UI的Policy中。如果您需要将Unix用户同步到Ranger,请根据集群是否部署了OpenLDAP服务,选择以下方法将Unix用户添加到Ranger UI的Policy中。
场景一:集群未部署OpenLDAP
-
在EMR的Master节点执行以下命令,添加用户。
sudo adduser <username> -
在EMR控制台Ranger服务的状态页签的组件列表区域,单击RangerUserSync组件操作列的重启,以同步新用户。
-
验证同步结果。
-
登录Ranger UI,详情请参见通过控制台访问开源组件Web界面。
-
选择。
-
在Users页签中,您可以查看是否有新创建的Unix用户。
例如,在步骤1中创建了test用户。
-
场景二:集群已部署OpenLDAP
如果集群中已部署OpenLDAP服务,默认会同步LDAP用户。此时需要手动修改Ranger配置参数以支持Unix用户同步。具体操作步骤如下:
-
在EMR的Master节点执行以下命令,添加用户。
sudo adduser <username> -
在EMR控制台Ranger服务的配置页签,搜索并修改以下参数:
-
ranger.usersync.sync.source:设置参数值为unix。 -
ranger.usersync.source.impl.class:设置参数值为org.apache.ranger.unixusersync.process.UnixUserGroupBuilder。
-
-
按照控制台提示,保存配置并重启Ranger服务后,即可正常同步Unix用户。
-
验证同步结果。
-
登录Ranger UI,详情请参见通过控制台访问开源组件Web界面。
-
选择。
-
在Users页签中,您可以查看是否有新创建的Unix用户。
例如,在步骤1中创建了test用户。
-
EMR 小文件过多导致 Hive on Spark 作业耗时过长如何解决?
当 OSS 上存在大量小文件时,Ranger 对 OSS 的鉴权操作会显著增加耗时,影响 HiveServer2 的执行效率。您可以通过以下任一方案解决该问题。
方案一:关闭 Ranger OSS 鉴权
-
登录 EMR 控制台,进入集群详情页。
-
在集群服务页签中,找到
Ranger-plugin服务。 -
单击
Ranger-plugin服务的状态页签,进入服务概述区域。 -
在服务概述区域找到
enableOSS开关,将其关闭。 -
重启
HiveServer2及 SparkThriftServer等常驻组件。
方案二:优化 Hive 小文件合并参数
在 Hive 服务配置中设置以下参数:
-
hive.merge.mapfiles=true(开启 Map 阶段小文件合并)。 -
hive.merge.mapredfiles=true(开启 Reduce 阶段小文件合并)。 -
hive.merge.size.per.task=256000000(合并后的目标文件大小)。
Ranger 初始化出现 SSL 异常如何处理?
问题现象
EMR 集群使用自建 MySQL 或 MariaDB 作为 Ranger 元数据库,且数据库已开启 SSL (have_ssl=YES) 时,执行 Ranger 初始化 (setup) 报错 javax.net.ssl.SSLException。典型报错信息为 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)。其中,SSLHandshakeException 是 SSLException 的子类。
问题原因
Ranger 默认使用的 mysql-connector-java 5.1.47 与 MariaDB 的 SSL 握手协议不兼容,导致 TLS 协商失败。该驱动在关闭 SSL 的情况下可以正常连接数据库,因此无需将其替换为 MySQL 8.x 版本的 connector。
解决方法
在 Ranger 的数据库连接配置中禁用 SSL,即在 JDBC URL 中添加 useSSL=false 参数。需要同时修改以下两处配置,只修改其中一处会导致 setup 仍读取到旧的连接串:
-
install.properties:将db_ssl_enabled设置为false,并将 JDBC URL 修改为jdbc:mysql://<host>:<port>/ranger?useSSL=false。 -
ranger-admin-site.xml:将ranger.jpa.jdbc.url修改为jdbc:log4jdbc:mysql://<host>:<port>/ranger?useSSL=false。
修改完成后,重新执行 Ranger setup 即可,无需重启 MySQL 或 MariaDB。
禁用 SSL 会降低数据库连接的安全性,仅建议在测试环境中使用。生产环境请先评估安全影响,再决定是否采用该方案。