我正在hadoop中运行spark流媒体作业。这台机器是kerberized和它运行了42个小时的罚款和失败,由于hdfs令牌委托到期。
我甚至为kinit命令设置了crontab,该命令每8小时运行一次,并且我有10小时的max renew lifetime令牌。
由于以下错误而失败:org.apache.hadoop.ipc.remoteexception(org.apache.hadoop.security.token.secretmanager$invalidtoken):token(hdfs\u delegation\u token token)
在启动作业时,我还在命令行中按原则运行该作业。
3条答案
按热度按时间5anewei61#
这已经晚了几年,但万一有人无意中发现:
禁用fs缓存(
fs.hdfs.impl.disable.cache=true
)手段FileSystem#get
每次调用时都将创建一个新的文件系统。相反,如果您通过,app master看起来可以刷新委派令牌
--keytab
至spark-submit
:https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cm_sg_yarn_long_jobs.html#xd_583c10bfdbd326ba-590cb1d1-149e9ca9886--7a82型
https://spark.apache.org/docs/latest/security.html#yarn-模式
nom7f22z2#
即使设置了此配置,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
9ceoxa923#
问题解决了。。。!在启动作业时,在spark命令行中添加了以下配置,它成功了。
--conf spark.hadoop.fs.hdfs.impl.disable.cache=true
或者,您可以在配置级别更改此项以全局影响。
我测试了它三天运行良好。
谢谢