【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException

Atlas Hook 消费 Kafka 报错:GroupAuthorizationException

一、问题现象

Atlas 启动后,NotificationHookConsumer 线程持续报错,典型信息是:

  • GroupAuthorizationException: Not authorized to access group: atlas
  • 日志刷屏式重试,说明消费者在 加入/描述消费组阶段就被拒绝(还没进入稳定消费流程)
bash 复制代码
2026-01-24 18:12:22,523 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:12:29,138 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:12:40,642 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:12:52,527 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:12:52,646 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:05,150 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:18,153 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:22,532 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:13:31,656 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:45,659 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:52,536 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:14:00,162 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in Notifi

现象要点

  • 报错资源是 GROUP(consumer group),不是 TOPIC。
  • 只要 group 被拒绝,客户端会在 JoinGroup/DescribeGroup 等阶段失败,表现为线程持续重试、告警持续出现。
  • 这类错误在 Atlas 侧常见伴随现象是:Hook 侧"看似在跑",但事件消费链路不稳定或长期无有效消费。

二、先确认 Atlas 的 Kafka 配置入口

Atlas 的 Kafka 客户端配置统一在:

bash 复制代码
/etc/atlas/conf/atlas-application.properties

核对思路

这里不去"猜策略",先把基础事实确认清楚,后面每一步才不会跑偏:

  1. Kafka 访问路径:Atlas 连接 Kafka 的入口(broker/zk)是否与当前集群一致。
  2. 鉴权方式:是否启用 Kerberos(SASL/GSSAPI)以及 Atlas 客户端走的机制。
  3. 客户端身份:Atlas 进程实际使用的 principal 必须与授权主体一致,否则策略配得再全也不会命中。
    常见偏差点
  • Atlas 服务配置里写的是 atlas/_HOST@REALM,但实际运行时落地到某台机器(例如 dev2)后,真实身份会变成 atlas/dev2@REALM
  • Ranger 里选用户时,如果授权给的是短名 atlas,但插件侧按 Kerberos principal 解析出来的主体不一致,也会造成"策略看着对,实际不生效"。

三、第一步尝试:用 kafka-acls.sh 直接补 Group ACL

当日志直接提示 Not authorized to access group: atlas,优先补齐 consumer group=atlas 的 ACL,用来验证 Kafka

原生鉴权维度本身是否缺失。

这里给 atlas/dev2@TTBIGDATA.COM 添加 group=atlas 的 READDESCRIBE

bash 复制代码
/usr/bigtop/current/kafka-broker/bin/kafka-acls.sh \
  --authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
  --add \
  --allow-principal "User:atlas/dev2@TTBIGDATA.COM" \
  --group atlas \
  --operation Read \
  --operation Describe
  
  
  
  ##  结果是
  [root@dev1 bin]# /usr/bigtop/current/kafka-broker/bin/kafka-acls.sh \
>   --authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
>   --add \
>   --allow-principal "User:atlas/dev2@TTBIGDATA.COM" \
>   --group atlas \
>   --operation Read \
>   --operation Describe
Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=atlas, patternType=LITERAL)`: 
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=READ, permissionType=ALLOW)
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=DESCRIBE, permissionType=ALLOW) 

Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=atlas, patternType=LITERAL)`: 
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=READ, permissionType=ALLOW)
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=DESCRIBE, permissionType=ALLOW) 

::: danger 处理办法可参考

22208:解决办法
:::

2、策略生效与现象回归

修改完策略后,重启 atlas-server,报错消失;同时 Ranger 拒绝记录不再出现。

结果确认

  • Atlas 侧 NotificationHookConsumer 不再刷 GroupAuthorizationException
  • Ranger 审计中与 consumer group=atlas 相关的 deny 记录停止新增
  • Hook 消费链路恢复后,Atlas 的 Kafka 消费线程进入稳定状态
相关推荐
Asher050919 小时前
Hive核心知识:从基础到实战全解析
数据仓库·hive·hadoop
yumgpkpm20 小时前
AI视频生成:Wan 2.2(阿里通义万相)在华为昇腾下的部署?
人工智能·hadoop·elasticsearch·zookeeper·flink·kafka·cloudera
予枫的编程笔记20 小时前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
倚肆20 小时前
在 Windows Docker 中安装 Kafka 并映射 Windows 端口
docker·kafka
断手当码农20 小时前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
Sheffield21 小时前
如果把ZooKeeper按字面意思比作动物园管理员……
elasticsearch·zookeeper·kafka
初次攀爬者21 小时前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
雪碧聊技术21 小时前
kafka的下载、安装、启动
kafka
业精于勤_荒于稀1 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式