与Kafka通信的Spark流式传输作业的Kerberos票证续订

时间:2018-03-05 22:43:10

标签: apache-spark spark-streaming kerberos

我有一个长期运行的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)

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到。

  1. 拥有一个定期执行keytab / ticket生成的shell脚本。

  2. [推荐] 将您的密钥表传递给Spark,并且只对spark用户有严格的访问权限,它可以自动为您重新生成故障单。访问this Cloudera社区页面了解更多详情。它只是一小步,你可以开始了!

  3. 希望有所帮助!