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

HDFS Delegation token expired even after adding principle to command line

我是 运行 hadoop 中的 spark streaming 工作。该机器已进行 kerberos 化,运行 正常运行 42 小时,但由于 HDFS 令牌委托到期而失败。

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

Failed due to error: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): token (HDFS_DELEGATION_TOKEN token

我也是运行在命令行启动时有原则的工作

问题已解决...! 在启动作业时将以下配置添加到 spark 命令行,它起作用了。

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

或者您可以在 yarn 配置级别更改它以影响全局。

我测试了它 运行 3 天没问题。

谢谢

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

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

相反,如果您将 --keytab 传递给 spark-submit,应用程序管理员似乎可以刷新委托令牌:

即使设置了此配置,Spark 作业也会失败。我们遇到了同样的问题。

令牌仅在 24 小时内有效。 Yarn 每 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