即使在向命令行添加原则之后,HDFS委托令牌也已过期

时间:2016-09-16 21:10:02

标签: hadoop spark-streaming kerberos kerberos-delegation

我在hadoop中运行了一个火花流媒体作业。机器是kerberized,它运行正常42小时,由于HDFS令牌授权到期而失败。

我甚至为每8小时运行一次的kinit命令设置了crontab,并且我有10小时的Max-renew生命周期令牌。

  

由于错误而失败:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager $ InvalidToken):token(HDFS_DELEGATION_TOKEN令牌

我还在启动它时在命令行中使用原则运行该作业。

3 个答案:

答案 0 :(得分:4)

问题解决了......!

,在启动作业时,将以下配置添加到spark命令行。

  

- conf spark.hadoop.fs.hdfs.impl.disable.cache = true

或者您可以在纱线配置级别更改此设置以影响全局。

我测试了它的运行罚款3天。

由于

答案 1 :(得分:0)

这晚了几年,但以防万一有人偶然发现:

禁用FS缓存(fs.hdfs.impl.disable.cache=true)意味着FileSystem#get将在每次调用时创建一个新的文件系统。

相反,如果您将--keytab传递给spark-submit,则看起来应用程序主可以刷新委托令牌:

答案 2 :(得分:0)

即使设置了此配置,Spark作业也将失败。我们面临着同样的问题。

令牌仅在24小时内有效。纱线会每24小时自动更新一次令牌,直到达到最长使用期限(7天)为止,然后令牌就无法再进行更新,因此需要重新发行,因此应用程序将失败。

这可能有助于解决问题。 https://community.cloudera.com/t5/Support-Questions/Long-running-Spark-streaming-job-that-crashes-on-HDP-2-3-4-7/td-p/181658