TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 安装

  • 组件安装

  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos

    • FreeIPA 认证

    • 其他优化技巧

      • Atlas-Ranger-StringUtils缺失
        • 一、报错日志复现
          • 1、报错行为总结
        • 二、问题定位:commons-lang3 缺失
        • 三、修复方式:补齐 commons-lang3.jar(可立即生效)
      • Atlas-Ranger-commons-compress缺失
    • 部分组件踩坑合集

    • 实战技巧

    • 其他技巧

  • Ranger 旧版专题

  • 旧版部署
  • Kerberos 旧版专题
  • 其他优化技巧
JaneTTR
2025-11-10
目录
一、报错日志复现
1、报错行为总结
二、问题定位:commons-lang3 缺失
三、修复方式:补齐 commons-lang3.jar(可立即生效)

Atlas-Ranger-StringUtils缺失

在当前环境中 Atlas 虽然可以正常启动,但在 Ranger Atlas Plugin 激活后,日志里仍会出现一些不太理想的报错。
这些报错不会导致 Atlas 无法启动,但属于 必须记录、后续需要优化 的问题类型。

本文目标

  • 复现报错
  • 解释原因
  • 给出修复方法

# 一、报错日志复现

在执行 install_ranger_atlas_plugin 相关任务时,Ambari 会调用 Credential Helper 生成 Keystore 凭证。
日志如下(关键片段保留):

2025-11-13 22:22:33,657 - Changing group for /tmp/tmp1763043753.657135_363 from 0 to hadoop
2025-11-13 22:22:33,657 - Changing permission for /tmp/tmp1763043753.657135_363 from 644 to 744
2025-11-13 22:22:33,657 - Moving /tmp/tmp1763043753.657135_363 to /usr/bigtop/current/atlas-server/conf/ranger-policymgr-ssl.xml
2025-11-13 22:22:33,670 - Execute[('/usr/bigtop/3.2.0/usr/lib/ranger-atlas-plugin/ranger_credential_helper.py', '-l', '/usr/bigtop/3.2.0/usr/lib/ranger-atlas-plugin/install/lib/*', '-f', '/etc/ranger/aaa_atlas/cred.jceks', '-k', 'sslKeyStore', '-v', [PROTECTED], '-c', '1')] {'environment': {'JAVA_HOME': '/opt/modules/jdk1.8.0_202'}, 'logoutput': True, 'sudo': True}
Using Java:/opt/modules/jdk1.8.0_202/bin/java
Error creating Alias!! Error: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
	at org.apache.hadoop.metrics2.lib.MutableMetricsFactory.getName(MutableMetricsFactory.java:134)
	at org.apache.hadoop.metrics2.lib.MutableMetricsFactory.getInfo(MutableMetricsFactory.java:130)
	at org.apache.hadoop.metrics2.lib.MutableMetricsFactory.newForField(MutableMetricsFactory.java:45)
	at org.apache.hadoop.metrics2.lib.MetricsSourceBuilder.add(MetricsSourceBuilder.java:147)
	at org.apache.hadoop.metrics2.lib.MetricsSourceBuilder.<init>(MetricsSourceBuilder.java:69)
	at org.apache.hadoop.metrics2.lib.MetricsAnnotations.newSourceBuilder(MetricsAnnotations.java:43)
	at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.register(MetricsSystemImpl.java:223)
	at org.apache.hadoop.metrics2.MetricsSystem.register(MetricsSystem.java:71)
	at org.apache.hadoop.security.UserGroupInformation$UgiMetrics.create(UserGroupInformation.java:149)
	at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:265)
	at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3746)
	at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3736)
	at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3520)
	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:540)
	at org.apache.hadoop.fs.Path.getFileSystem(Path.java:365)
	at org.apache.hadoop.security.alias.KeyStoreProvider.initFileSystem(KeyStoreProvider.java:84)
	at org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider.<init>(AbstractJavaKeyStoreProvider.java:85)
	at org.apache.hadoop.security.alias.KeyStoreProvider.<init>(KeyStoreProvider.java:49)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:42)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:35)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider$Factory.createProvider(JavaKeyStoreProvider.java:68)
	at org.apache.hadoop.security.alias.CredentialProviderFactory.getProviders(CredentialProviderFactory.java:91)
	at org.apache.ranger.credentialapi.CredentialReader.getDecryptedString(CredentialReader.java:74)
	at org.apache.ranger.credentialapi.buildks.createCredential(buildks.java:87)
	at org.apache.ranger.credentialapi.buildks.main(buildks.java:41)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 25 more

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

关键报错

java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

说明 ranger-atlas 插件 classpath 中 缺少 commons-lang3。

# 1、报错行为总结

行为 说明
CredentialHelper 初始化失败 因缺失依赖
Ranger SSL keystore alias 无法创建 依赖 CredentialHelper
Atlas 最终能启动 此报错不阻断主流程
功能不完整 plugin 功能不完全生效

# 二、问题定位:commons-lang3 缺失

Atlas 的 Ranger Plugin 会调用:

  • ranger_credential_helper.py
  • 进而执行 org.apache.ranger.credentialapi.buildks

而这条链路依赖:

org.apache.commons.lang3.StringUtils
1

正常情况下,commons-lang3 应该存在于:

/usr/bigtop/3.2.0/usr/lib/ranger-atlas-plugin/install/lib/
1

但当前构建中,该目录缺少:

commons-lang3-*.jar
1

为什么缺?

因为 bigtop+ranger+atlas 组合构建中,部分插件的依赖并不会自动继承,需要手动补齐。 这是 构建逻辑的问题,不是 Ambari 的问题。

# 三、修复方式:补齐 commons-lang3.jar(可立即生效)

直接从其他 ranger 插件目录复制即可,如 ranger-yarn-plugin 中包含完整依赖:

cp /usr/bigtop/3.2.0/usr/lib/ranger-yarn-plugin/install/lib/commons-lang3-3.12.0.jar \
    /usr/bigtop/3.2.0/usr/lib/ranger-atlas-plugin/install/lib/
1
2

完成后:

  1. 重启 Atlas
  2. 执行 Ranger Atlas Plugin 初始化逻辑
  3. CredentialHelper 不再报错

说明

commons-lang3 版本号可根据环境调整,但建议保持 Ranger 系列插件版本一致,避免兼容性问题。

#Ranger#Kerberos#安全认证#Ambari#Atlas
Ambari Server 证书调试安装速记
Atlas-Ranger-commons-compress缺失

← Ambari Server 证书调试安装速记 Atlas-Ranger-commons-compress缺失→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式