由于令牌在 24 小时后无法在缓存中找到,Spark Launcher 作业未启动
Posted
技术标签:
【中文标题】由于令牌在 24 小时后无法在缓存中找到,Spark Launcher 作业未启动【英文标题】:Spark Launcher Jobs not starting because of token cant be found in cache after 24 hours 【发布时间】:2017-07-01 10:29:11 【问题描述】:我有一个 Java 应用程序,它连续运行并检查数据库中的表是否有新记录。当在表中添加新记录时,Java 应用程序会执行解压缩文件并将其放入 HDFS 位置,然后触发 Spark 作业(我正在使用 Java 应用程序内的“SparkLauncher”类以编程方式触发 Spark 作业),它对 HDFS 位置中新添加的文件进行处理。
我已经使用 Oozie Java Action 在集群中安排了 Java 应用程序。 该集群是 HDP kerberized 集群。
该作业 24 小时运行良好。所有的解压缩都会发生,并且 spark 作业正在运行。
但 24 小时后,解压缩发生在 Java 应用程序中,但 Spark 作业未在资源管理器中触发。
异常:连接服务器时遇到异常:INFO:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken):token (owner=****, renewer =oozie mr token, realUser=oozie, issueDate=1498798762481, maxDate=1499403562481, sequenceNumber=36550, masterKeyId=619) 在缓存中找不到
据我了解,24 小时后 oozie 正在更新令牌,而该令牌并未针对 Spark 启动器作业进行更新。 spark Launcher 仍在寻找缓存中不可用的旧令牌。
请帮助我,如何让 Spark Launcher 寻找新令牌。
【问题讨论】:
【参考方案1】:据我了解,24 小时后 oozie 正在更新令牌
为什么?你能指出任何文档、源代码、博客吗?
请记住,Oozie 是批处理作业的调度程序,其规范用例(在 Yahoo!)用于触发每小时作业。 只有一个病态的批处理作业会运行超过 24 小时,因此更新 Hadoop 委托令牌在 Oozie 中并不是真正有用。
但是您的 Java 事物充当服务,持续运行,并且在崩溃时需要自动重启。所以你应该考虑...
Slider,如果你真的想在 YARN 中运行它(虽然有 有很多很多的缺点——你如何检查 正在运行的 YARN 作业的日志?您如何确保应用程序按时启动并且不会因缺乏资源而延迟?你怎么能确保你的应用不会因为 YARN 需要资源来完成高优先级的工作而被杀死?) 但是仅仅运行你的玩具应用可能有点过头了 或在某个边缘节点上运行的普通 Linux 服务 - 这是一个自己动手的任务,但不是非常复杂,并且网上有教程如果您坚持使用 Oozie,尽管 YARN 和 Oozie 都有所有限制,那么您必须更改应用程序的运行方式——例如,安排 Coordinator 每 12 小时启动一次作业并通过“标称时间”作为 Workflow 属性,编辑 Workflow 以将该时间传递给 Java 应用程序,编辑 Java 代码以便应用程序在 (arg + 11:58) 退出并为下一个 exec 扫清道路。
【讨论】:
以上是关于由于令牌在 24 小时后无法在缓存中找到,Spark Launcher 作业未启动的主要内容,如果未能解决你的问题,请参考以下文章
Ionic ios push:无法在缓存中找到令牌错误域=com.google.iid 代码=-25300“(空)”