spark流媒体上来自kafkaconsumer的kdc调用过多

f8rj6qna  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(313)

我有一个独立的(出于自身原因,master=local)spark结构化流应用程序,它从kerberizedkafka集群读取数据。
它在功能上可以工作,但它对kdc的调用太多,无法为每个微批处理执行获取tgs。
或与 useTicketCache=true 或者通过在jaas配置中提供keytab,行为是相同的——它为每个任务的每个代理轰炸kdc。
spark似乎从缓存中正确地获取了tgt,而tgs在多次运行到同一个代理时没有被重用。
当试图查看调试日志时,它在获取tgs之前显示下面的消息

Found ticket for UPN/DOMAIN@REALM to go to krbtgt/DOMAIN@REALM expiring on Thu Jul 23 09:08:39 CEST 2020
Entered Krb5Context.initSecContext with state=STATE_NEW
Service ticket not found in the subject

我缺少任何Spark配置吗?

rslzwgfq

rslzwgfq1#

原来是kerberos配置的问题。我们不小心 useSubjectCredsOnly=false 在系统属性中。
删除它(默认值为true)修复了问题。
参考:jdk代码中的sun.security.jgss.krb5.krb5context.java

相关问题