全部产品
Search
文档中心

开源大数据平台E-MapReduce:常见问题

更新时间:Sep 01, 2026

本文汇总了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

  1. 在EMR的Master节点执行以下命令,添加用户。

    sudo adduser <username>
  2. 在EMR控制台Ranger服务的状态页签的组件列表区域,单击RangerUserSync组件操作列的重启,以同步新用户。

  3. 验证同步结果。

    1. 登录Ranger UI,详情请参见通过控制台访问开源组件Web界面。

    2. 选择Settings > Users/Groups/Roles。

    3. 在Users页签中,您可以查看是否有新创建的Unix用户。

      例如,在步骤1中创建了test用户。

场景二:集群已部署OpenLDAP

如果集群中已部署OpenLDAP服务,默认会同步LDAP用户。此时需要手动修改Ranger配置参数以支持Unix用户同步。具体操作步骤如下:

  1. 在EMR的Master节点执行以下命令,添加用户。

    sudo adduser <username>
  2. 在EMR控制台Ranger服务的配置页签,搜索并修改以下参数:

    • ranger.usersync.sync.source:设置参数值为unix。

    • ranger.usersync.source.impl.class:设置参数值为org.apache.ranger.unixusersync.process.UnixUserGroupBuilder。

  3. 按照控制台提示,保存配置并重启Ranger服务后,即可正常同步Unix用户。

  4. 验证同步结果。

    1. 登录Ranger UI,详情请参见通过控制台访问开源组件Web界面。

    2. 选择Settings > Users/Groups/Roles。

    3. 在Users页签中,您可以查看是否有新创建的Unix用户。

      例如,在步骤1中创建了test用户。

EMR 小文件过多导致 Hive on Spark 作业耗时过长如何解决?

当 OSS 上存在大量小文件时,Ranger 对 OSS 的鉴权操作会显著增加耗时,影响 HiveServer2 的执行效率。您可以通过以下任一方案解决该问题。

方案一:关闭 Ranger OSS 鉴权

  1. 登录 EMR 控制台,进入集群详情页。

  2. 在集群服务页签中,找到Ranger-plugin服务。

  3. 单击Ranger-plugin服务的状态页签,进入服务概述区域。

  4. 在服务概述区域找到enableOSS开关,将其关闭。

  5. 重启HiveServer2及 Spark ThriftServer等常驻组件。

方案二:优化 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 仍读取到旧的连接串:

  1. install.properties:将 db_ssl_enabled 设置为 false,并将 JDBC URL 修改为 jdbc:mysql://<host>:<port>/ranger?useSSL=false。

  2. ranger-admin-site.xml:将 ranger.jpa.jdbc.url 修改为 jdbc:log4jdbc:mysql://<host>:<port>/ranger?useSSL=false。

修改完成后,重新执行 Ranger setup 即可,无需重启 MySQL 或 MariaDB。

说明

禁用 SSL 会降低数据库连接的安全性,仅建议在测试环境中使用。生产环境请先评估安全影响,再决定是否采用该方案。