TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 二开指导

    • 前端开发
    • 后端开发
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 优化增强

    • 组件配置调优
  • 支持&共建

    • 蓝图愿景
    • 合作共建
    • 服务说明
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 二开指导

    • 前端开发
    • 后端开发
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 优化增强

    • 组件配置调优
  • 支持&共建

    • 蓝图愿景
    • 合作共建
    • 服务说明
登陆
GitHub (opens new window)
  • 版本-v2.2.2-以前

    • [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
    • [22212]解决办法
    • [22211]Atlas 缺失 __AtlasUserProfile
    • [22211]解决办法
    • [22210]Atlas Hook 无权限访问 Kafka Topic
    • [22210]解决办法
    • [22209]Ranger Kafka Lookup 缺少 JAAS 配置
    • [22209]解决办法
    • [22208]Atlas Hook 消费 Kafka 报错
    • [22208]解决办法
    • [22207]Hue 内访问 SparkSql 失败
    • [22207]解决办法
    • [22206]Ranger 调用 Knox Topologies 失败
    • [22206]解决办法
    • [22205]Ranger Admin 轮刷ZK 缺失 JAAS
    • [22205]解决办法
      • 一、问题现象与触发条件
        • 1、页面/服务表现
        • 2、典型复现场景
      • 二、日志定位:timedTask 失败 + dynamic config 非法事件 + 认证失败
        • 1、核心日志(原样保留)
        • 2、日志关键点拆解
      • 三、造成的原因(两个问题叠加)
        • 1、原因一:ZooKeeper dynamic config 缺少 extended clientPort 段
        • 2、原因二:Ranger 侧 ZK SASL/JAAS 参数缺失或被覆盖到 /dev/null
      • 四、排查策略(先止血、再闭环)
        • 1、优先判断:是不是 dynamic config 在持续刷错
        • 2、再判断:是不是 JAAS 被指到了 /dev/null
        • 3、最后验证:以“重启后是否继续刷错”验收
      • 五、修复一:打开 extended server.* format(解决 Invalid config event)
        • 1、修改后的内容
        • 2、修改内容(保留原始写法)
        • 3、Ambari 开关(直接打开)
      • 六、修复二:补齐 Ranger Admin 的 ZK SASL/JAAS(解决 /dev/null + Authentication failed)
        • 1、为什么要在 advance ranger-env 加
        • 2、在 advance ranger-env 增加 JAVA_OPTS(保留原始内容)
        • 3、配置文件也需要同步调整(图片保留)
      • 七、验证清单
        • 1、验证 dynamic config 解析错误已消失
        • 2、验证 /dev/null 与 Client 段相关错误已消失
        • 3、验证 timedTask 不再持续失败
    • [22204]KNOX policymgr-ssl 启动告警
    • [22204]解决办法
    • [22203]Hue 服务启动后秒退
    • [22203]解决办法
    • [22202]Hue 启动失败: hadoop 用户不存在
    • [22202]解决办法
    • [22201]Hive 使用 Tez 引擎插入数据失败
    • [22201]解决办法
  • 版本-v2.1.0-以前

  • BUG临时处理
  • 版本-v2.2.2-以前
JaneTTR
2026-01-19
目录

[22205]解决办法

# 一、问题现象与触发条件

# 1、页面/服务表现

image-20260116210107745

现象特征

  • Ranger Admin 能启动,但后台任务持续报错(定时刷)
  • 日志出现 HiveResourceMgr timedTask 初始化失败
  • 同时伴随 ZooKeeper 相关的 动态配置解析错误 与 SASL/JAAS 认证失败

# 2、典型复现场景

场景条件 说明 影响点
集群启用了 Kerberos Ranger / ZK / Hive 链路走安全认证 认证参数缺失会直接失败
Ranger 依赖 ZooKeeper 资源探测、服务发现、连接管理常见依赖 ZK 配置异常会放大影响
使用 Bigtop Stack stacks/BIGTOP/3.2.0 的配置模板/默认值差异 更容易出现“默认没开但需要”的开关

排查策略先说结论

这类问题通常是 两个错误叠在一起: 先把会“持续刷屏”的硬错误(dynamic config 解析失败)止血,再处理认证链路(SASL/JAAS)。

# 二、日志定位:timedTask 失败 + dynamic config 非法事件 + 认证失败

# 1、核心日志(原样保留)

      at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
2026-01-16 12:58:24,324 [timed-executor-pool-0] ERROR [HiveResourceMgr.java:172] Could not initiate at timedTask
2026-01-16 12:58:42,783 [timed-executor-pool-0] INFO [BaseClient.java:132] Init Lookup Login: security enabled, using lookupPrincipal/lookupKeytab
2026-01-16 12:58:42,786 [timed-executor-pool-0] INFO [HiveClient.java:85] Secured Mode: JDBC Connection done with preAuthenticated Subject
2026-01-16 12:58:42,787 [timed-executor-pool-0-SendThread(dev1:2181)] WARN [ClientCnxn.java:1094] SASL configuration failed: javax.security.auth.login.LoginException: No JAAS configuration section named 'Client' was found in specified JAAS configuration file: '/dev/null'. Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.
2026-01-16 12:58:42,788 [timed-executor-pool-0-EventThread] ERROR [ConnectionState.java:307] Authentication failed
2026-01-16 12:58:42,793 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:42,793 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,264 [timed-executor-pool-0] INFO [BaseClient.java:132] Init Lookup Login: security enabled, using lookupPrincipal/lookupKeytab
2026-01-16 12:58:43,266 [timed-executor-pool-0] INFO [HiveClient.java:85] Secured Mode: JDBC Connection done with preAuthenticated Subject
2026-01-16 12:58:43,268 [timed-executor-pool-0-SendThread(dev2:2181)] WARN [ClientCnxn.java:1094] SASL configuration failed: javax.security.auth.login.LoginException: No JAAS configuration section named 'Client' was found in specified JAAS configuration file: '/dev/null'. Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.
2026-01-16 12:58:43,269 [timed-executor-pool-0-EventThread] ERROR [ConnectionState.java:307] Authentication failed
2026-01-16 12:58:43,274 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,274 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,378 [timed-executor-pool-0-SendThread(dev3:2181)] WARN [ClientCnxn.java:1094] SASL configuration failed: javax.security.auth.login.LoginException: No JAAS configuration section named 'Client' was found in specified JAAS configuration file: '/dev/null'. Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.
2026-01-16 12:58:43,378 [timed-executor-pool-0-EventThread] ERROR [ConnectionState.java:307] Authentication failed
2026-01-16 12:58:43,384 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,384 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,489 [timed-executor-pool-0-SendThread(dev2:2181)] WARN [ClientCnxn.java:1094] SASL configuration failed: javax.security.auth.login.LoginException: No JAAS configuration section named 'Client' was found in specified JAAS configuration file: '/dev/null'. Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.
2026-01-16 12:58:43,489 [timed-executor-pool-0-EventThread] ERROR [ConnectionState.java:307] Authentication failed
2026-01-16 12:58:43,493 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
2026-01-16 12:58:43,494 [timed-executor-pool-0-EventThread] ERROR [EnsembleTracker.java:214] Invalid config event received: {server.1=dev1:2888:3888:participant, version=0, server.3=dev3:2888:3888:participant, server.2=dev2:2888:3888:participant}
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

# 2、日志关键点拆解

先抓“最能指导下一步动作”的三行

  • Invalid config event received:dynamic config 解析失败(硬错误、可稳定复现)
  • specified JAAS configuration file: '/dev/null':JAAS 配置指向异常(高概率是启动参数没生效/被覆盖)
  • Authentication failed:安全模式下 ZK 认证失败(会让后续组件初始化频繁失败)

# 三、造成的原因(两个问题叠加)

# 1、原因一:ZooKeeper dynamic config 缺少 extended clientPort 段

现象里能看到 server.* 已经出现 :participant,但缺少 ;host:2181 的 clientPort 扩展段。

为什么会触发 Invalid config event

ZK 动态配置(/zookeeper/config)属于可变的 ensemble 描述信息。 客户端(Curator 的 EnsembleTracker)监听到变更事件后,需要解析出完整 server 条目(含角色与对外 clientPort)。 当事件只带 participant 而缺失 clientPort 时,就会被判定为“非法配置事件”,从而刷 Invalid config event received。

# 2、原因二:Ranger 侧 ZK SASL/JAAS 参数缺失或被覆盖到 /dev/null

日志明确写了:

  • No JAAS configuration section named 'Client'
  • ... JAAS configuration file: '/dev/null'

这类问题最常见的根因不是 keytab 不对,而是 JVM 参数没有带上(或者被 systemd/脚本覆盖),导致 Ranger 在连接 ZK 时根本没加载到期望的 JAAS 文件,自然也就找不到 Client 段。

为什么 timedTask 会被打断

HiveResourceMgr timedTask 属于后台周期任务,初始化阶段经常会依赖内部连接状态(例如 ZK 状态、认证状态、下游依赖)。 当 ZK 侧不断抛出 “非法配置事件 + 认证失败” 时,定时任务的初始化动作会反复失败,表现为服务“活着但一直报错”。

# 四、排查策略(先止血、再闭环)

# 1、优先判断:是不是 dynamic config 在持续刷错

grep -n "Invalid config event received" -n /var/log/ranger/admin/ranger-admin-*.log | tail -n 50
1

判断标准

  • 持续增长:先修复 ZK dynamic config 格式(问题一)
  • 偶发出现:仍建议修复,但需要同步检查 ZK 是否频繁重配/滚动重启

# 2、再判断:是不是 JAAS 被指到了 /dev/null

grep -n "/dev/null" -n /var/log/ranger/admin/ranger-admin-*.log | tail -n 50
grep -n "No JAAS configuration section named 'Client'" -n /var/log/ranger/admin/ranger-admin-*.log | tail -n 50
1
2

判断标准

  • /dev/null 只要出现,几乎就可以确定:Ranger 侧 JAAS 加载没有按预期生效

# 3、最后验证:以“重启后是否继续刷错”验收

grep -n "HiveResourceMgr.java:172" -n /var/log/ranger/admin/ranger-admin-*.log | tail -n 50
1

# 五、修复一:打开 extended server.* format(解决 Invalid config event)

# 1、修改后的内容

image-20260118233548677

# 2、修改内容(保留原始写法)

先修复第一个问题。 第一个问题是动态配置格式不对。

我们只要把:

server.1=dev1:2888:3888
server.2=dev2:2888:3888
server.3=dev3:2888:3888

# 改成 


server.1=dev1:2888:3888:participant;dev1:2181

server.2=dev2:2888:3888:participant;dev2:2181

server.3=dev3:2888:3888:participant;dev3:2181
1
2
3
4
5
6
7
8
9
10
11
12

常见误区

  • 只补 participant 不补 ;devX:2181,错误仍会存在
  • ;0.0.0.0:2181 不建议出现在 dynamic config 中,主机名/固定 IP 更稳定

# 3、Ambari 开关(直接打开)

我们只要把:

Enable extended server.* format 配置打开就好,这个默认在 ttr-2.2.3 内置,且默认值 是 true
1

image-20260118233820175

修复效果

打开以后,我们的 ranger 重启后,就不会报这个错了。

# 六、修复二:补齐 Ranger Admin 的 ZK SASL/JAAS(解决 /dev/null + Authentication failed)

# 1、为什么要在 advance ranger-env 加

关于 sals 的 问题。 这种场景下,最直接的做法就是把 ZK SASL/JAAS 所需的 JVM 参数 显式写入 Ranger Admin 启动参数,避免走默认值或被其它环境变量覆盖。

# 2、在 advance ranger-env 增加 JAVA_OPTS(保留原始内容)

我们在这里 advance ranger-env 里 加入这些内容:

{% if security_enabled %}
export JAVA_OPTS=" ${JAVA_OPTS} \
  -Dzookeeper.sasl.client=true \
  -Dzookeeper.sasl.clientconfig=Client \
  -Dzookeeper.sasl.client.username={{zookeeper_principal_primary}} \
  -Djava.security.auth.login.config=/etc/ranger/admin/conf/ranger_jaas/ranger_zk_jaas.conf \
  -Djavax.security.auth.useSubjectCredsOnly=false "
{% endif %}
1
2
3
4
5
6
7
8

如下图所示。

image-20260119110811072

参数说明(对照排查)

  • -Dzookeeper.sasl.client=true:开启 ZK 客户端 SASL
  • -Dzookeeper.sasl.clientconfig=Client:使用 JAAS 配置中的 Client 段(段名必须一致)
  • -Djava.security.auth.login.config=...:显式指定 JAAS 文件,避免落到 /dev/null
  • -Djavax.security.auth.useSubjectCredsOnly=false:允许使用 Subject 凭证链路

# 3、配置文件也需要同步调整(图片保留)

除此之外。 这个配置文件 也需要按照这个方式来做。

image-20260119110943952

落地检查点

  • ranger_zk_jaas.conf 中必须存在 Client { ... } 段
  • Client 段里的 principal / keytab 要与 zookeeper_principal_primary、部署的 keytab 保持一致
  • 如果参数写了但不生效,优先检查 systemd 启动脚本是否覆盖 JAVA_OPTS

# 七、验证清单

# 1、验证 dynamic config 解析错误已消失

grep -n "Invalid config event received" -n /var/log/ranger/admin/ranger-admin-*.log | tail
1

# 2、验证 /dev/null 与 Client 段相关错误已消失

grep -n "/dev/null" -n /var/log/ranger/admin/ranger-admin-*.log | tail
grep -n "No JAAS configuration section named 'Client'" -n /var/log/ranger/admin/ranger-admin-*.log | tail
grep -n "Authentication failed" -n /var/log/ranger/admin/ranger-admin-*.log | tail
1
2
3

# 3、验证 timedTask 不再持续失败

grep -n "HiveResourceMgr.java:172" -n /var/log/ranger/admin/ranger-admin-*.log | tail
1

验收标准

  • Ranger 重启后不再持续出现 Invalid config event received
  • 日志中不再出现 /dev/null,且 Authentication failed 不再刷屏
  • HiveResourceMgr timedTask 不再周期性连续失败(允许偶发,但不能持续增长)

image-20260119112421803

#Ranger Admin#HiveResourceMgr#timedTask#SASL#JAAS Client#zookeeper.sasl.client#XmlConfig#policymgr-ssl.xml#stacks/BIGTOP/3.2.0#Bigtop
[22205]Ranger Admin 轮刷ZK 缺失 JAAS
[22204]KNOX policymgr-ssl 启动告警

← [22205]Ranger Admin 轮刷ZK 缺失 JAAS [22204]KNOX policymgr-ssl 启动告警→

最近更新
01
Ambari-Web-3.0.0本地启动与二开环境搭建
01-28
02
左侧 Service 数量控制原理与实现
01-28
03
[22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
01-28
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式