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]解决办法
    • [22204]KNOX policymgr-ssl 启动告警
    • [22204]解决办法
      • 一、现象复现与关键日志
        • 1、启动侧的直观表现
        • 2、目录侧的“对照证据”(第一眼就能发现规律)
      • 二、定位过程:为什么说“逻辑执行了两次”?
        • 1、文件命名规律:成双成对
        • 2、启动日志:同一段生成逻辑触发了两次
        • 3、直接推断:三类文件写入,漏掉其中一个
      • 三、修复点:把文件名写正确
        • 1、对照修复:按 repo_name 拼接文件名
        • 2、验证标准:生成结果必须“成双成对”
      • 四、生产修复:不重装组件,直接替换 Ambari stacks 脚本
        • 1、替换路径(Ambari Server 侧)
        • 2、推荐操作流程(带回滚点)
        • 3、让修复真正生效:触发 Knox 侧重新执行配置生成
    • [22203]Hue 服务启动后秒退
    • [22203]解决办法
    • [22202]Hue 启动失败: hadoop 用户不存在
    • [22202]解决办法
    • [22201]Hive 使用 Tez 引擎插入数据失败
    • [22201]解决办法
  • 版本-v2.1.0-以前

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

[22204]解决办法

# 一、现象复现与关键日志 KNOX + Ranger

# 1、启动侧的直观表现

Knox 服务启动后,日志中出现与 Ranger 插件资源文件相关的告警,典型特征是:

  • addResourceIfReadable(...): couldn't find resource file location
  • 缺失文件名集中在 ranger-knox-*-policymgr-ssl.xml 这一类
    2026-01-15 20:42:54,041 ... ERROR config.RangerConfiguration (RangerConfiguration.java:addResourceIfReadable(61)) - addResourceIfReadable(ranger-knox-policymgr-ssl.xml): couldn't find resource file location
    2026-01-15 20:42:54,045 ... ERROR config.RangerConfiguration (RangerConfiguration.java:addResourceIfReadable(61)) - addResourceIfReadable(ranger-knox-abc_knox-policymgr-ssl.xml): couldn't find resource file location
    
    [root@dev1 knox]# cd /etc/ranger/abc_
    abc_hadoop/ abc_knox/   abc_yarn/
    [root@dev1 knox]# cd /etc/ranger/abc_
    
    1
    2
    3
    4
    5
    6
    Knox 在启动过程中尝试加载 Ranger 插件相关 XML 资源文件;
    其中至少有一类文件未生成或文件名不符合预期,导致 addResourceIfReadable 无法读取。
    
    1
    2
    // Make sure to add code blocks to your code group

    # 2、目录侧的“对照证据”(第一眼就能发现规律)

    image-20260116140530103

    观察点

    /etc/ranger/abc_knox/ 目录下的文件通常是成对出现的(同一语义两份:默认名 + 带 repo_name 的变体),这为后续“缺哪一个”提供了非常直观的对照基线。

    # 二、定位过程:为什么说“逻辑执行了两次”? 对号入座

    # 1、文件命名规律:成双成对

    从目录现象可以看到,这类配置通常是“成双成对”的:

    image-20260116135844757

    为了把“直觉”变成“可复用的判断标准”,可以用一张表把规律固化下来:

    语义用途 期望文件 A(通用名) 期望文件 B(带 repo_name)
    PolicyMgr SSL 配置 ranger-knox-policymgr-ssl.xml ranger-knox-<repo_name>-policymgr-ssl.xml

    常见误判

    看到 “couldn't find resource file location”,容易先怀疑 classpath / conf_dir / 权限。 但当目录里“本来应该成对”的文件只出现了一半时,优先级最高的排查方向应该是:生成脚本写错了文件名或写漏了文件。

    # 2、启动日志:同一段生成逻辑触发了两次

    从启动输出可以捕捉到:相关逻辑被执行了两次(也就解释了“为什么目录里按理应出现两份”这一事实基础):

    image-20260116140039860

    为什么“两次”很关键?

    如果逻辑只执行一次,那“只生成一份文件”也可能是设计如此; 但当日志已经证明执行两次,而目录却只生成一份或生成错名,就基本可以锁定:脚本写入目标不正确(文件名拼接、变量引用、写入路径)。

    # 3、直接推断:三类文件写入,漏掉其中一个

    对照现象后,很容易得到一个可验证的推断:

    • 生成逻辑本应覆盖到 ranger-knox-policymgr-ssl.xml 与 ranger-knox-<repo>-policymgr-ssl.xml
    • 实际写入只有一类命名生效,另一类命名缺失(或写成了别的文件名)

    image-20260116140801045

    一句话定位

    “对号入座”时发现缺口,基本等价于:文件名拼接漏了 repo_name(或者写入目标被覆盖)。

    # 三、修复点:把文件名写正确 XmlConfig

    # 1、对照修复:按 repo_name 拼接文件名

    继续沿着“对号入座”的方式,把缺失项补齐即可:

    image-20260116140921697

    核心修复点就是:生成带 repo_name 的 policymgr-ssl 文件。

    XmlConfig("ranger-knox-" + params.repo_name + "-policymgr-ssl.xml",
          conf_dir=params.knox_conf_dir,
          configurations=ranger_knox_policymgr_ssl,
          owner=params.knox_user,
          group=params.knox_group,
          mode=0o755)
    
    1
    2
    3
    4
    5
    6

    参数含义补全

    • params.repo_name:Ranger 插件 repo(如 abc_knox)对应的命名维度
    • conf_dir=params.knox_conf_dir:落盘目录(通常对应 Knox conf 目录或插件期望目录)
    • owner/group/mode:直接决定 Knox 运行时是否能读取(生成成功后建议顺手核一下属主属组)

    # 2、验证标准:生成结果必须“成双成对”

    当修复正确时,目录侧应满足:

    • ranger-knox-policymgr-ssl.xml 存在
    • ranger-knox-<repo_name>-policymgr-ssl.xml 存在
    • 两者内容结构一致、差异只体现在命名/引用层面(按实现而定)

    验证建议

    不要只看文件“有没有”,还要看:

    • 生成路径是否正确(是否被写到了别的目录)
    • 文件权限是否能被 Knox 进程读取

    # 四、生产修复:不重装组件,直接替换 Ambari stacks 脚本 可落地

    # 1、替换路径(Ambari Server 侧)

    生产侧不一定允许全量打包重编译,这种场景更推荐“替换 stacks 脚本”的方式:

    • 替换目标目录:
    /var/lib/ambari-server/resources/stacks/BIGTOP/3.2.0/services/KNOX/package/scripts
    
    1
    • 替换文件:
    setup_ranger_knox.py
    
    1

    对应位置如下:

    image-20260116141834127

    # 2、推荐操作流程(带回滚点)

    生产操作建议

    在替换前务必备份原脚本,避免无法回滚导致维护窗口扩大。

      cd /var/lib/ambari-server/resources/stacks/BIGTOP/3.2.0/services/KNOX/package/scripts
      
      # 1) 备份
      cp -a setup_ranger_knox.py setup_ranger_knox.py.bak.$(date +%F_%H%M%S)
      
      # 2) 覆盖(将修复后的 setup_ranger_knox.py 放到当前目录再覆盖)
      cp -a /path/to/fixed/setup_ranger_knox.py ./setup_ranger_knox.py
      
      1
      2
      3
      4
      5
      6
      7
      # 常见环境
      systemctl restart ambari-server
      
      # 或使用 ambari-server 管理命令(以环境为准)
      ambari-server restart
      
      1
      2
      3
      4
      5
      // Make sure to add code blocks to your code group

      # 3、让修复真正生效:触发 Knox 侧重新执行配置生成

      Ambari Server 只负责“下发与执行脚本”,脚本替换后需要触发一次 Knox 的配置下发/重启:

      • 在 Ambari UI 对 Knox 执行一次 Restart
      • 或触发一次 Reconfigure / Refresh configs(以 UI 实际入口为准)

      成功标志

      Knox 重启后再次查看日志,addResourceIfReadable(ranger-knox-*-policymgr-ssl.xml) 的缺失告警消失; 同时在目标目录能看到带 repo_name 的文件按预期生成。

      #Knox#Ranger Plugin#policymgr-ssl.xml#XmlConfig#Bigtop#stacks/BIGTOP/3.2.0#资源文件缺失
      [22204]KNOX policymgr-ssl 启动告警
      [22203]Hue 服务启动后秒退

      ← [22204]KNOX policymgr-ssl 启动告警 [22203]Hue 服务启动后秒退→

      最近更新
      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
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式