【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 消费线程进入稳定状态
相关推荐
m0_687399844 小时前
telnet localhost 15672 RabbitMQ “Connection refused“ 错误表示目标主机拒绝了连接请求。
分布式·rabbitmq
indexsunny4 小时前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
零一科技4 小时前
centos7安装hadoop3(上)
hadoop
陌上丨4 小时前
生产环境分布式锁的常见问题和解决方案有哪些?
分布式
新新学长搞科研4 小时前
【智慧城市专题IEEE会议】第六届物联网与智慧城市国际学术会议(IoTSC 2026)
人工智能·分布式·科技·物联网·云计算·智慧城市·学术会议
Francek Chen5 小时前
【大数据基础】实验1:熟悉常用的Linux操作和Hadoop操作
大数据·linux·hadoop·hdfs
泡泡以安5 小时前
Scrapy分布式爬虫调度器架构设计说明
分布式·爬虫·scrapy·调度器
编程彩机6 小时前
互联网大厂Java面试:从Spring Boot到分布式事务的技术场景解析
spring boot·kafka·分布式事务·微服务架构·java面试·技术解析
没有bug.的程序员6 小时前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融