我在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令牌
我还在启动它时在命令行中使用原则运行该作业。
答案 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天)为止,然后令牌就无法再进行更新,因此需要重新发行,因此应用程序将失败。