【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 消费线程进入稳定状态
相关推荐
做个文艺程序员18 小时前
私有 LLM 多机多卡分布式推理:Pipeline Parallel vs Tensor Parallel 踩坑全记录
人工智能·分布式
武子康19 小时前
大数据-263 实时数仓-Canal 增量订阅与消费原理:MySQL Binlog 数据同步实践
大数据·hadoop·后端
foundbug99920 小时前
Matlab基于分布式模型预测控制的多固定翼无人机共识控制
分布式·matlab·无人机
一个有温度的技术博主21 小时前
Redis集群实战:如何实现节点的弹性伸缩与数据迁移?
redis·分布式·缓存·架构
Jackeyzhe1 天前
从零学习Kafka:位移与高水位
kafka
面向Google编程1 天前
从零学习Kafka:位移与高水位
大数据·后端·kafka
却话巴山夜雨时i1 天前
互联网大厂Java面试:从Spring到微服务的全栈挑战
java·spring boot·redis·微服务·面试·kafka·技术栈
小雨青年1 天前
鸿蒙 HarmonyOS 6 | 分布式数据同步详解
分布式·华为·harmonyos
仗剑_走天涯1 天前
zookeeper 安装与配置
hadoop·zookeeper
zhixingheyi_tian1 天前
hdfs.c 之解析
c语言·hadoop·hdfs