Flink使用(三)——记一次Flink Session任务反复重启

前言

  环境: JDK 1.8+Flink 1.6+Hadoop 2.7.3html

  文中如有表述不正确,欢迎大伙留言指出,谢谢!node

一、现象

  使用yarn-session在yarn上启动flink集群并提交任务后,在Flink Web UI 上发现任务的state个数每十分钟左右会从0到10左右后又重复从0开始,但输出的结果没有问题。web

二、分析过程

  2.1 检查checkpoint过程(不是最终缘由

  最开始觉得是checkpoint的状态(RockDB方式)未设置好,检查配置未发现问题。使用yarn logs命令查找任务日志,发现没有没有Error,详细分析日志发现:apache

1 INFO:yarn.YarnApplicationMasterRunner:RECEIVER SIGNAL 15: SIGTERM. Shutting down as requested

   操做系统为何会发送请求kill掉容器了?从日志中没有找到有用信息,在网上查找前辈们的使用经验[1],发现当任务逻辑中有keyBy(key),其key变化时会致使窗口状态没法清理致使物理内存溢出容器被kill,可是咱们的checkpoint的状态个数到10左右就又从新从0开始,并且每一个state的大小只有几KB,因此能够排除是由于物理内存溢出致使的。浏览器

  2.2 虚拟内存溢出(不是最终缘由

  既然从任务日志自己没有发现问题,容器又被kill掉,因此打算从容器的日志出发去分析缘由。分析容器自己的日志,就要去查看yarn的对应日志,经过任务日志中获取的容器信息找到集群对应的节点而后再分析对应时间短的容器日志,发现虚拟内存超过了申请,以下:session

  虚拟内存通常是申请内存的2.1倍(Hadoop中默认),博主为每一个容器申请的内存为1G,因此对应的虚拟内存是2.1G,遇到这种状况最好的解决办法是扩大申请的资源好比2G,扩大资源后发现问题仍是存在。为何会用到这么多虚拟内存了?组里的前辈提示多是JDK 1.8内存模型的缘由,可是申请1G以前是能够测试的,并且我测试仅使用yarn-session在yarn上申请Flink集群,但不提交任务,问题仍是存在,因此没有沿着这个方向去分析(后续仍是得扩展学习的)。 oop

  在yarn的任务页面查看任务的状态时发现其有多个Attempt ID,其对应web UI和端口都是变化的,具体以下图:学习

    AM为何会重启这么屡次了?AM的重启的最大次数是由yarn.resourcemanager.am.max-attempts肯定,而集群中该参数为2。说明该参数未生效。测试

  2.3 继续容器日志分析

  继续分析容器日志发现以下:spa

   容器10min会timeout被干掉,该值是由yarn上yarn.resourcemanager.container.liveness-monitor.interval-ms=600000ms(yarn-default.xml)肯定的[2],到此,10min state重启的缘由找到了,可是为何AM重启的次数未被限制住了?在日志中找到信息以下:

   从日志中发现,任务重启次数是统计在10秒钟中任务重启的次数,超过10重启的次数就不会被统计,该值在Flink中是由akka.ask.timeout=10s决定的[3]。到此,AM屡次重启的缘由也找到了。可是,是什么缘由致使的AM失败仍是没有找到,后台找到ERROR以下:

    该信息仅显示NodeManager的心跳信息未上报成功,但缘由未知。

三、尝试输出yarn对应类的Debug信息

  设置是在浏览器中yarn的ResourceManager active 节点的8088端口后加上logLevel,如:127.0.0.1:8088/logLevel,在页面上指定类名和日志级别,而后在对应节点的ResourceManager日志中就能够找到对应的debug日志。本问题中设置类名为org.apache.hadoop.yarn.server.resourcemanager.mnode,结果没有找到有用信息。

四、解决办法

  在排除问题过程当中发现同集群上Spark任务AM的attempt ID已经重启到1600+了,因此到此判断是Yarn的问题致使,可是什么问题仍是没有找到。

  解决办法:重启yarn集群便可。

后记:

  哎,真是一顿操做猛如虎啊,到头啥缘由仍是没有定位出来。不过在这个过程当中涉及的思考过程和涉及的参数仍是值得记录下来的,因此有了这篇博客,对不住了各位看官,愿勿恼! 

Ref:

[1]http://www.javashuo.com/article/p-zumzneab-mc.html

[2]http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

[3]https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/jobmanager_high_availability.html

相关文章
相关标签/搜索