在我的例子中,我使用的是spark(2.1.1),对于处理,我需要连接到kafka(使用kerberos,因此是keytab)。
提交作业时,我可以传递带有--keytab和--principal选项的keytab。主要缺点是keytab不会被发送到分布式缓存(或者至少对执行者可用),因此它将失败。
Caused by: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
...
Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner` authentication information from the user
如果我尝试同时在--files中传递它,它可以工作(版本2.1.0),但在最新版本(2.1.1)中它是不允许的,因为它失败的原因是:
Exception in thread "main" java.lang.IllegalArgumentException: Attempt to add (file:keytab.keytab) multiple times to the distributed cache.
有什么建议吗?
1条答案
按热度按时间jecbmhm31#
我通过复制我的keytab文件(例如,原始文件是
osboo.keytab
以及它的副本osboo-copy-for-kafka.keytab
)并通过--files
选项。也许这个解决方案需要较少的努力来记住文件之间的符号链接,所以我希望它能有所帮助。