在Hadoop YARN中,当SIGTERM信号被捕获时,YARN容器退出。那么,如何检测YARN容器何时即将结束并运行一些自定义代码。我如何将它注入YARN框架?
我正在寻找一个解决方案,特别是Spark on YARN,但也是一个通用的解决方案,适用于使用YARN的其他服务(Hive on Tez,MR)
如果我们正在讨论清理节点,请考虑使用:
yarn.nodemanager.localizer.cache.target-size-mb
yarn.nodemanager.localizer.cache.cleanup.interval-ms
很好地解释了这些属性。
对于SIGTERM的真正自由,您可能需要深入研究yarn本身的代码,以找到如何劫持或扩展yarn容器执行器本身以使其屈服于您的意愿。这意味着编译和部署你的代码到集群,但是有一个叫做BipTop的项目可以帮助你做这类事情。
如果…你不会记录很多,只想记录一点点....您可以滥用累加器来执行您的命令并将信息记录给驱动程序。这里有一个很好的解释/例子。它不是为记录而设计的,但如果您非常谨慎地使用它,比如少量的项目,它就可以完成这项工作。累加器在计数时最有用。他们还将至少记录一次计数。(如果executor终止并重新运行,它可能会计数两次,所以要小心。)(它们是映射器/reducer的保留。)
字符串累加器的一个更好的滥用:您可以使用它张贴日志文件的位置,以便稍后检索该文件。