本文汇总了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(合并后的目标文件大小)。