TT Bigdata TT Bigdata
首页
  • 部署专题

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

    • 安装指导
    • 魔改分享
  • 高阶玩法

    • 实战 Kerberos
    • 实战 Ranger
  • 版本专题

    • 更新说明
    • 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
    • 实战 Ranger
  • 版本专题

    • 更新说明
    • 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)
  • HA-高可用安装-其他发行版|低于2.2.3版本

  • HA-高可用安装-ttr-release | 大于2.2.2 版本

  • FreeIPA & LDAP 下的搭配与实战【企业生产】

    • [Step1] Ambari 安装 Ranger 并配置 FreeIPA + LDAP
    • [Step2] 制作 Ranger Usersync 证书并应用组件
    • [Step3] 制作 Ranger Admin 证书并应用组件
    • [Step4]Ranger HDFS Repository 创建失败修复
    • [Step5]Ranger HBase Repository 创建失败修复
      • 一、故障现象:HBase 仓库一直创建失败
      • 二、核心报错:默认策略引用 atlas,但 Ranger Admin 侧不存在该用户
        • 1、从请求 JSON 中定位到策略字段
      • 三、定位路径:把 Ambari 自动化行为还原成可复现证据
        • 1、GET 确认 repo 不存在
        • 2、POST 创建 repo,返回 400
      • 五、验收:组件侧重试成功 + Ranger Admin 可见 HBase repo
        • 1、组件侧成功(HBase Master 重启后触发)
        • 2、Ranger Admin 页面确认 HBase Repository 已创建
  • 踩坑汇总

  • 解决方案

  • 组件安装-Ranger
  • FreeIPA & LDAP 下的搭配与实战【企业生产】
JaneTTR
2026-02-15
目录

[Step5]Ranger HBase Repository 创建失败修复

# Ranger HBase Repository 创建失败修复(缺失 atlas 用户导致 400 拒绝)

# 一、故障现象:HBase 仓库一直创建失败

在 Ambari 的自动化安装/启用 Ranger Plugin 过程中,会尝试在 Ranger Admin 上创建 abc_hbase 仓库(Repository)。从 Ambari 侧日志看,流程是:

  1. 先 GET 查询:确认仓库不存在(返回 [])
  2. 再 POST 创建:创建 HBase repo(返回 400)
  3. Repository creation failed:进入重试

image-20260215223036969

下面日志片段可以看到 GET 返回 [],POST 直接返回 400 并拒绝创建:

2026-02-15 21:58:33,476 - call['ambari-sudo.sh su hbase -l -s /bin/bash -c 'curl --location-trusted -k --negotiate -u : -b /var/lib/ambari-agent/tmp/cookies/4a33d5d3-feb4-4661-bbcc-c5f219ec2031 -c /var/lib/ambari-agent/tmp/cookies/4a33d5d3-feb4-4661-bbcc-c5f219ec2031 '"'"'http://dev2.test.com:6080/service/public/v2/api/service?serviceName=abc_hbase&serviceType=hbase&isEnabled=true'"'"' --connect-timeout 10 --max-time 12 -X GET 1>/tmp/tmpryqhyv3u 2>/tmp/tmpp21_xp6u''] {'quiet': False, 'env': {'KRB5CCNAME': '/var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f'}}
2026-02-15 21:58:33,754 - call returned (0, '')
2026-02-15 21:58:33,755 - get_user_call_output returned (0, '[]', '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100     2    0     2    0     0     58      0 --:--:-- --:--:-- --:--:--    58')
2026-02-15 21:58:33,756 - call['/usr/bin/klist -s /var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f'] {'user': 'hbase'}
2026-02-15 21:58:33,989 - call returned (0, '')
2026-02-15 21:58:33,991 - call['ambari-sudo.sh su hbase -l -s /bin/bash -c 'curl --location-trusted -k --negotiate -u : -b /var/lib/ambari-agent/tmp/cookies/727c7f35-04d8-4740-8bf6-887582385add -c /var/lib/ambari-agent/tmp/cookies/727c7f35-04d8-4740-8bf6-887582385add http://dev2.test.com:6080/service/public/v2/api/service --connect-timeout 10 --max-time 12 -H '"'"'Content-Type: application/json'"'"' -X POST -d '"'"'{"isEnabled": "true", "configs": {"username": "hbase", "password": "hbase", "hadoop.security.authentication": "kerberos", "hbase.security.authentication": "kerberos", "hbase.zookeeper.property.clientPort": "2181", "hbase.zookeeper.quorum": "dev1.test.com,dev2.test.com,dev3.test.com", "zookeeper.znode.parent": "/hbase-secure", "commonNameForCertificate": "", "hbase.master.kerberos.principal": "hbase/_HOST@TEST.COM", "policy.download.auth.users": "hbase", "tag.download.auth.users": "hbase", "policy.grantrevoke.auth.users": "hbase", "setup.additional.default.policies": "true", "default-policy.1.name": "Service Check User Policy for Hbase", "default-policy.1.resource.table": "ambarismoketest", "default-policy.1.resource.column-family": "*", "default-policy.1.resource.column": "*", "default-policy.1.policyItem.1.users": "ambari-qa", "default-policy.1.policyItem.1.accessTypes": "read,write,create", "default-policy.2.name": "Atlas - table, column-family, column", "default-policy.2.resource.table": "ATLAS_ENTITY_AUDIT_EVENTS,atlas_janus", "default-policy.2.resource.column-family": "*", "default-policy.2.resource.column": "*", "default-policy.2.policyItem.1.users": "atlas", "default-policy.2.policyItem.1.accessTypes": "read,write,create"}, "description": "hbase repo", "name": "abc_hbase", "type": "hbase"}'"'"' 1>/tmp/tmpjprrs1rg 2>/tmp/tmpjhohar_0''] {'quiet': False, 'env': {'KRB5CCNAME': '/var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f'}}
2026-02-15 21:58:34,493 - call returned (0, '')
2026-02-15 21:58:34,493 - get_user_call_output returned (0, '{"statusCode":400,"msgDesc":"Operation denied. User name: atlas specified in policy does not exist in ranger admin."}', '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100  1434    0   117  100  1317    417   4703 --:--:-- --:--:-- --:--:--  5121\r100  1434    0   117  100  1317    417   4703 --:--:-- --:--:-- --:--:--  5103')
2026-02-15 21:58:34,494 - Repository creation failed
2026-02-15 21:59:04,516 - checked_call['/usr/bin/kinit -c /var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f -kt /etc/security/keytabs/hbase.service.keytab hbase/dev1.test.com@TEST.COM > /dev/null'] {'user': 'hbase'}
2026-02-15 21:59:04,756 - checked_call returned (0, '')
2026-02-15 21:59:04,757 - call['ambari-sudo.sh su hbase -l -s /bin/bash -c 'curl --location-trusted -k --negotiate -u : -b /var/lib/ambari-agent/tmp/cookies/8a536ddb-15be-4015-9d82-bbc96271a67a -c /var/lib/ambari-agent/tmp/cookies/8a536ddb-15be-4015-9d82-bbc96271a67a '"'"'http://dev2.test.com:6080/service/public/v2/api/service?serviceName=abc_hbase&serviceType=hbase&isEnabled=true'"'"' --connect-timeout 10 --max-time 12 -X GET 1>/tmp/tmpnleopjuf 2>/tmp/tmpmrxqfi0g''] {'quiet': False, 'env': {'KRB5CCNAME': '/var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f'}}
2026-02-15 21:59:05,031 - call returned (0, '')
2026-02-15 21:59:05,032 - get_user_call_output returned (0, '[]', '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100     2    0     2    0     0     51      0 --:--:-- --:--:-- --:--:--    52')
2026-02-15 21:59:05,033 - checked_call['/usr/bin/kinit -c /var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f -kt /etc/security/keytabs/hbase.service.keytab hbase/dev1.test.com@TEST.COM > /dev/null'] {'user': 'hbase'}
2026-02-15 21:59:05,271 - checked_call returned (0, '')
2026-02-15 21:59:05,272 - call['ambari-sudo.sh su hbase -l -s /bin/bash -c 'curl --location-trusted -k --negotiate -u : -b /var/lib/ambari-agent/tmp/cookies/a44cf509-6a46-41dc-8121-0047dfd2de82 -c /var/lib/ambari-agent/tmp/cookies/a44cf509-6a46-41dc-8121-0047dfd2de82 http://dev2.test.com:6080/service/public/v2/api/service --connect-timeout 10 --max-time 12 -H '"'"'Content-Type: application/json'"'"' -X POST -d '"'"'{"isEnabled": "true", "configs": {"username": "hbase", "password": "hbase", "hadoop.security.authentication": "kerberos", "hbase.security.authentication": "kerberos", "hbase.zookeeper.property.clientPort": "2181", "hbase.zookeeper.quorum": "dev1.test.com,dev2.test.com,dev3.test.com", "zookeeper.znode.parent": "/hbase-secure", "commonNameForCertificate": "", "hbase.master.kerberos.principal": "hbase/_HOST@TEST.COM", "policy.download.auth.users": "hbase", "tag.download.auth.users": "hbase", "policy.grantrevoke.auth.users": "hbase", "setup.additional.default.policies": "true", "default-policy.1.name": "Service Check User Policy for Hbase", "default-policy.1.resource.table": "ambarismoketest", "default-policy.1.resource.column-family": "*", "default-policy.1.resource.column": "*", "default-policy.1.policyItem.1.users": "ambari-qa", "default-policy.1.policyItem.1.accessTypes": "read,write,create", "default-policy.2.name": "Atlas - table, column-family, column", "default-policy.2.resource.table": "ATLAS_ENTITY_AUDIT_EVENTS,atlas_janus", "default-policy.2.resource.column-family": "*", "default-policy.2.resource.column": "*", "default-policy.2.policyItem.1.users": "atlas", "default-policy.2.policyItem.1.accessTypes": "read,write,create"}, "description": "hbase repo", "name": "abc_hbase", "type": "hbase"}'"'"' 1>/tmp/tmpci6_nvcj 2>/tmp/tmprcf0fmi3''] {'quiet': False, 'env': {'KRB5CCNAME': '/var/lib/ambari-agent/tmp/curl_krb_cache/ranger_admin_calls_hbase_cc_8604de46ba37388cb4dc89f4565b0bd6b7f8ad780f0b1f64fae17a6f'}}
2026-02-15 21:59:05,771 - call returned (0, '')
2026-02-15 21:59:05,772 - get_user_call_output returned (0, '{"statusCode":400,"msgDesc":"Operation denied. User name: atlas specified in policy does not exist in ranger admin."}', '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100  1434    0   117  100  1317    434   4895 --:--:-- --:--:-- --:--:--  5330')
2026-02-15 21:59:05,772 - Repository creation failed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

与 HDFS 场景的差异

  • HDFS 常见是 {"statusCode":1},更像会话/用户解析问题
  • HBase 这里是明确的 400 + msgDesc 指向用户不存在,属于“策略校验拒绝”

# 二、核心报错:默认策略引用 atlas,但 Ranger Admin 侧不存在该用户

错误信息非常直白:

{"statusCode":400,"msgDesc":"Operation denied. User name: atlas specified in policy does not exist in ranger admin."}
1

这说明 HBase Repository 创建请求里携带了“默认策略”(default policies),其中某条 policyItem.users 指定了 atlas,而 Ranger Admin 在校验策略时发现该用户不存在,于是直接拒绝创建。

# 1、从请求 JSON 中定位到策略字段

在 Ambari 的 POST payload 里可以看到(关键段落):

  • default-policy.2.name = "Atlas - table, column-family, column"
  • default-policy.2.policyItem.1.users = "atlas"
"default-policy.2.name": "Atlas - table, column-family, column",
"default-policy.2.resource.table": "ATLAS_ENTITY_AUDIT_EVENTS,atlas_janus",
"default-policy.2.policyItem.1.users": "atlas",
"default-policy.2.policyItem.1.accessTypes": "read,write,create"
1
2
3
4

结论

不是 Ranger Admin “不通” 或 “Kerberos 不对”,而是 创建请求内置策略无法通过校验,触发硬拒绝(400)。

# 三、定位路径:把 Ambari 自动化行为还原成可复现证据

Ambari 日志中已经给出了完整调用链,关键在于把它读成“标准 API 行为”,便于排查时快速对齐。

# 1、GET 确认 repo 不存在

curl ... \
  "http://dev2.test.com:6080/service/public/v2/api/service?serviceName=abc_hbase&serviceType=hbase&isEnabled=true"
# 返回 []
1
2
3

日志证据:

2026-02-15 21:58:33,755 - get_user_call_output returned (0, '[]', ...)
1

# 2、POST 创建 repo,返回 400

日志证据(节选,保留原始返回):

2026-02-15 21:58:34,493 - get_user_call_output returned (0, '{"statusCode":400,"msgDesc":"Operation denied. User name: atlas specified in policy does not exist in ranger admin."}', ...)
1

这类报错不要直接重试

重试不会自动修复“用户不存在”的校验条件,只会让安装过程卡住更久。

处理办法可参考

  • Ranger HBase Repository 创建失败修复(缺失 atlas 用户导致 400 拒绝)

# 五、验收:组件侧重试成功 + Ranger Admin 可见 HBase repo

完成 atlas 用户补齐并同步后,组件侧重新触发创建流程(示例中通过重启 HBase Master 触发相关链路),可以看到创建成功。

# 1、组件侧成功(HBase Master 重启后触发)

image-20260215223721184

# 2、Ranger Admin 页面确认 HBase Repository 已创建

image-20260215223742599

#Ranger Admin#FreeIPA#Kerberos#HBase Repository#Usersync#Ambari#Kylin V10
[Step4]Ranger HDFS Repository 创建失败修复
调用 Ranger API 返回 403 问题

← [Step4]Ranger HDFS Repository 创建失败修复 调用 Ranger API 返回 403 问题→

最近更新
01
Ranger Admin LDAP 认证报 Bad credentials 分析
02-15
02
Ranger Admin LDAP 认证报 Bad credentials 处理
02-15
03
Ranger Admin 证书快速导入脚本
02-15
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式