我有一个独立的(出于自身原因,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配置吗?
1条答案
按热度按时间rslzwgfq1#
原来是kerberos配置的问题。我们不小心
useSubjectCredsOnly=false
在系统属性中。删除它(默认值为true)修复了问题。
参考:jdk代码中的sun.security.jgss.krb5.krb5context.java