TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 安装

  • 组件安装

  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos

    • FreeIPA 认证

    • 其他优化技巧

    • 部分组件踩坑合集

      • Test Kerberos Client报错:Failed to kinit
      • KERBEROS SERVICE CHECK 报错
      • Ambari开启Kerberos认证加密类型错误
      • [开启Kerberos]-Solr启动失败处理
      • [开启Kerberos]-Kafka启动失败处理
        • 一、问题现象
        • 二、原因分析
        • 三、应急解决方案(无需重新部署)
          • 修改位置:
          • 修改后完整内容示例:
        • 四、说明与建议
        • 五、源码级持久修复方案(推荐在自定义包中调整)
      • [开启Kerberos]-Atlas启动-Hbase权限异常
      • [开启Kerberos]-Atlas启动-Solr权限异常
      • [开启Kerberos]-Atlas启动-Kafka权限异常
      • [开启Kerberos]-Hive服务检查异常处理
      • [开启Kerberos]-Trino启动-配置文件处理
      • [开启Kerberos]-Trino启动-缺失PEM证书处理
      • [开启Kerberos]-Trino启动-连接Hive失败
      • [关闭 Kerberos]-Kafka 注销异常
      • [关闭 Kerberos]-Hive 注销异常
      • Kerberos 客户端模板渲染异常处理(临时处理)
      • Kafka 启动兼容 Kerberos 源码级修改
      • Kerberos 客户端模板渲染异常处理(源码修改)
    • 实战技巧

    • 其他技巧

  • Ranger 旧版专题

  • 旧版部署
  • Kerberos 旧版专题
  • 部分组件踩坑合集
JaneTTR
2025-10-31
目录
一、问题现象
二、原因分析
三、应急解决方案(无需重新部署)
修改位置:
修改后完整内容示例:
四、说明与建议
五、源码级持久修复方案(推荐在自定义包中调整)

[开启Kerberos]-Kafka启动失败处理

温馨提示

本文内容在使用 ttr-2.2.0 版本之前,开启Kerberos后才会遇到。 后续版本已经做了处理,无需关注! 如果在部署、二开过程中,遇到任何问题可以联系作者。 👉 联系入口在此页 (opens new window)

# 一、问题现象

在 Ambari 启用 Kerberos 后启动 Kafka 服务时,出现如下错误,Kafka 无法正常启动。

[2025-10-29 10:53:11,598] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
[2025-10-29 10:53:12,414] INFO starting (kafka.server.KafkaServer)
[2025-10-29 10:53:12,415] INFO Connecting to zookeeper on hadoop1:2181,hadoop2:2181,hadoop3:2181 (kafka.server.KafkaServer)
[2025-10-29 10:53:12,465] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
java.lang.SecurityException: zookeeper.set.acl is true, but ZooKeeper client TLS configuration identifying at least kafka.server.KafkaConfig$@6572421.ZkSslClientEnableProp, kafka.server.KafkaConfig$@6572421.ZkClientCnxnSocketProp, and kafka.server.KafkaConfig$@6572421.ZkSslKeyStoreLocationProp was not present and the verification of the JAAS login file failed [java.security.auth.login.config=null, zookeeper.sasl.client=default:true, zookeeper.sasl.clientconfig=default:Client]
        at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:445)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:191)
        at kafka.Kafka$.main(Kafka.scala:109)
        at kafka.Kafka.main(Kafka.scala)
[2025-10-29 10:53:12,473] INFO shutting down (kafka.server.KafkaServer)
[2025-10-29 10:53:12,486] INFO shut down completed (kafka.server.KafkaServer)
[2025-10-29 10:53:12,486] ERROR Exiting Kafka. (kafka.Kafka$)
[2025-10-29 10:53:12,488] INFO shutting down (kafka.server.KafkaServer)
[root@hadoop1 kafka]#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

image-20251029105503817

# 二、原因分析

从日志看,java.security.auth.login.config=null,说明 Kafka 未正确加载 JAAS 登录配置。 在 Kerberos 模式下,Kafka 依赖 KAFKA_KERBEROS_PARAMS 变量来传递 JAAS 文件路径及认证参数。

而在 Ambari 2.2.0 以前版本,Kafka 环境模板(kafka-env.sh)中并未自动加入此变量, 导致即使启用了 Kerberos,Kafka 进程仍然以默认参数启动,从而报:

zookeeper.set.acl is true ... verification of the JAAS login file failed
1

# 三、应急解决方案(无需重新部署)

可以直接在 Ambari Web → Kafka → 配置 → kafka-env template 中补充一行环境变量定义。

# 修改位置:

打开模板编辑:

image-20251105180207887

在文件末尾加入以下内容:

export KAFKA_OPTS="$KAFKA_OPTS ${KAFKA_KERBEROS_PARAMS:+$KAFKA_KERBEROS_PARAMS }"
1

# 修改后完整内容示例:


#!/bin/bash

# Set KAFKA specific environment variables here.

# The java implementation to use.
export JAVA_HOME={{java64_home}}
export PATH=$PATH:$JAVA_HOME/bin
export PID_DIR={{kafka_pid_dir}}
export LOG_DIR={{kafka_log_dir}}
{% if kerberos_security_enabled or kafka_other_sasl_enabled %}
export KAFKA_KERBEROS_PARAMS="-Djavax.security.auth.useSubjectCredsOnly=false {{kafka_kerberos_params}}"
{% else %}
export KAFKA_KERBEROS_PARAMS={{kafka_kerberos_params}}
{% endif %}
# Add kafka sink to classpath and related depenencies
if [ -e "/usr/lib/ambari-metrics-kafka-sink/ambari-metrics-kafka-sink.jar" ]; then
  export CLASSPATH=$CLASSPATH:/usr/lib/ambari-metrics-kafka-sink/ambari-metrics-kafka-sink.jar
  export CLASSPATH=$CLASSPATH:/usr/lib/ambari-metrics-kafka-sink/lib/*
fi
{% if stack_supports_kafka_env_include_ranger_script %}
if [ -f /etc/kafka/conf/kafka-ranger-env.sh ]; then
. /etc/kafka/conf/kafka-ranger-env.sh
fi
{% else %}
      export CLASSPATH=$CLASSPATH:{{conf_dir}}
{% endif %}
export KAFKA_OPTS="$KAFKA_OPTS ${KAFKA_KERBEROS_PARAMS:+$KAFKA_KERBEROS_PARAMS }"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 四、说明与建议

版本说明

  • Ambari ≤ 2.2.0:默认模板中 未包含 KAFKA_KERBEROS_PARAMS 引用,必须手动添加。
  • Ambari ≥ 2.2.1:官方模板已合入该修复,不再需要人工干预。

修改后重新启动 Kafka,即可验证正常连接 Zookeeper,不再出现 SecurityException 报错。

# 五、源码级持久修复方案(推荐在自定义包中调整)

对于需要频繁发版或自动化部署的环境, 建议在打包前直接修改 Ambari 的 Kafka 环境模板源文件, 使安装后的实例默认带入修复后的配置。

参考: Ambari 开启 Kerberos - Kafka 启动源码级修复

#Kafka#Kerberos#安全认证#Ambari#ZooKeeper
[开启Kerberos]-Solr启动失败处理
[开启Kerberos]-Atlas启动-Hbase权限异常

← [开启Kerberos]-Solr启动失败处理 [开启Kerberos]-Atlas启动-Hbase权限异常→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式