我尝试在Flume中设置KafkaChannel(或KafkaSource)。我不断收到以下例外
引起:javax.security.auth.login.LoginException:无法登录: 客户端被要求输入密码,但Kafka客户端代码 目前不支持从用户获取密码。 确保将-Djava.security.auth.login.config属性传递给JVM 并且客户端配置为使用票证缓存 (使用JAAS配置设置'useTicketCache = true)'。 确保您使用的是您正在尝试的Kafka经纪商的FQDN 连接至。无法从用户那里获取身份验证信息
我的jaas.conf
正在关注:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName="kafka"
keyTab="flume-kafka.keytab"
principal="flume/kafka@MYDOMAIN.COM";
};
我通过
向Flume提供了这个组合JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config=/path/to/jaas.conf "
最后我指定了
agent.channels.myChannel.kafka.consumer.security.protocol = SASL_PLAINTEXT
有没有人有任何想法为什么Flume不使用keyTab?如果需要更多细节,请告诉我。
答案 0 :(得分:0)
感谢此post(orininal)我注意到Flume 1.6 documentation provided by Cloudera中指定的KafkaClient
配置缺少某些选项。然后我看了Official Apache Flume 1.7 documentation并注意到我错过了以下属性:
a1.channels.channel1.kafka.consumer.sasl.mechanism = GSSAPI
a1.channels.channel1.kafka.consumer.sasl.kerberos.service.name = kafka
答案 1 :(得分:0)
根据kafka文档,版本0.10
中添加了sasl_plaintext。
SASL / GSSAPI(Kerberos) - 从版本0.9.0.0开始
SASL / PLAIN - 从版本0.10.0.0开始
SASL / SCRAM-SHA-256和SASL / SCRAM-SHA-512 - 从版本0.10.2.0开始
但是水道版1.8
仍然使用kafka_client_2.11_0.9.1.jar
。我想这可能是水槽的错误。
你可以重写flume-kafka-sink.jar来修复bug。
答案 2 :(得分:0)
KafkaClient 可以粘贴粘贴的配置。
以上情况很好,但以下是需要注意的事项 1.非Cloudera用户的主体名称必须与KLIST中显示的主体名称完全相同。 2.非常基本,请使用密钥标签文件的完整路径
如果使用“ Kafka-console-consumer”,则必须在命令行中使用JAVA_OPTS,如果使用Cloudera Manager,则必须使用config参数。
如果使用Kafka-console-consumer,请记住使用--consumer.config开关指向client.properties文件。
完成上述所有操作后,您仍然可能会收到相同的错误。 那是由于ACL。 用户使用Kafka文档,并为上述用户(包括Kafka)设置Kafka主题权限以允许访问。除非您这样做,否则您将无权访问主题,并且将显示相同的错误。
最良好的祝愿。