1、使用基础信息
Kafka版本1.0.1
Zookeeper版本3.4.6
Ranger版本1.1.0
Kerberos版本1.10.3-30
两个账号:启动Kafka服务的kafka账号,和自己创建的个人账号yixt
kinit刷新kerberos缓存
2、创建和删除Topic
2.1、配置jaas.conf
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName="kafka";
};
2.2、添加环境变量
export KAFKA_CLIENT_KERBEROS_PARAMS="-Djava.security.auth.login.config=/home/yixt/jaas.conf"
2.3、创建topic
./kafka-topics.sh --create --zookeeper xxx:2181,yyy:2181,zzz:2181/kafka --replication-factor 2 --partitions 1 --topic test
使用yixt账号运行上述命令,将会出现如下错误:
若没有出现上述问题,出现的现象是创建topic成功的话,则kafka在zookeeper中/config/topics权限有错误。使用zookeeper的getAcl命令可查看权限(图中显示必须要kafka使用sasl方式访问,这是期望的):
正确创建topic的方式:使用kafka账号创建。
2.4、删除Topic
./kafka-topics.sh --delete --zookeeper xxx:2181,yyy:2181,zzz:2181/kafka --topic test
使用yixt账号运行上述命令,将会出现如下错误:
若没有出现上述问题,出现的现象是删除topic成功的话,错误原因与创建topic相同。
正确创建topic的方式:使用kafka账号删除。
2.3、参考链接
1、https://community.hortonworks.com/questions/55306/kafka-consumer-problem-on-kerberos-enabled-cluster.html
2、https://community.hortonworks.com/content/supportkb/151827/error-orgapachezookeeperkeeperexceptionnoauthexcep.html
3、https://community.hortonworks.com/content/supportkb/150056/errororgapachezookeeperkeeperexceptionnoauthexcept.html