我有一个长期运行的Spark流媒体作业,它在一个kerberized Hadoop集群上运行。它每隔几天就会失败并出现以下错误:
诊断:在缓存中找不到令牌(XXXXXXX的令牌:HDFS_DELEGATION_TOKEN所有者= XXXXXXXXX@XX.COM,续订者=纱线,realUser =,issueDate = XXXXXXXXXXXXXXX,maxDate = XXXXXXXXXX,sequenceNumber = XXXXXXXX,masterKeyId = XXX)
我尝试将--keytab和--principal选项添加到spark-submit。但我们已经有以下选项可以做同样的事情:
对于第二个选项,我们已经使用以下内容传递了keytab和principal: 'spark.driver.extraJavaOptions = -Djava.security.auth.login.config = kafka_client_jaas.conf -Djava.security.krb5.conf = krb5.conf -XX:+ UseCompressedOops -XX:+ UseG1GC -XX:+ UnlockDiagnosticVMOptions -XX :+ G1SummarizeConcMark -XX:InitiatingHeapOccupancyPercent = 35 -XX:ConcGCThreads = 12'\
spark.executor.extraJavaOptions也是如此。如果我们添加选项--principal和--keytab,则会导致尝试多次向分布式缓存添加文件(keytab)
答案 0 :(得分:0)
有两种方法可以做到。
拥有一个定期执行keytab / ticket生成的shell脚本。
[推荐] 将您的密钥表传递给Spark,并且只对spark用户有严格的访问权限,它可以自动为您重新生成故障单。访问this Cloudera社区页面了解更多详情。它只是一小步,你可以开始了!
希望有所帮助!