目前我正在一个由4台机器组成的远程集群上运行一个flink程序,该集群使用144个TaskSlot。运行大约30分钟后,我收到以下错误:
info org.apache.flink.runtime.jobmanager.web.jobmanagerinfoservlet-作业管理器的信息服务器:无法为作业b2eaff8539c8c9b696826e69fb40ca14写入json更新,因为org.eclipse.jetty.io.runtimeioexception:org.eclipse.jetty.io.eofexception位于org.eclipse.jetty.io.uncheckedprintwriter.seterror(uncheckedprintwriter)。java:107)在org.eclipse.jetty.io.uncheckedprintwriter.write(uncheckedprintwriter。java:280)在org.eclipse.jetty.io.uncheckedprintwriter.write(uncheckedprintwriter。java:295)在org.apache.flink.runtime.jobmanager.web.jobmanagerinfoservlet.writejsonupdatesforjob(jobmanagerinfoservlet)。java:588)在org.apache.flink.runtime.jobmanager.web.jobmanagerinfoservlet.doget(jobmanagerinfoservlet。java:209)在javax.servlet.http.httpservlet.service(httpservlet。java:734)在javax.servlet.http.httpservlet.service(httpservlet。java:847) 位于org.eclipse.jetty.servlet.servletholder.handle(servletholder。java:532)位于org.eclipse.jetty.servlet.servlethandler.dohandle(servlethandler。java:453)位于org.eclipse.jetty.server.session.sessionhandler.dohandle(sessionhandler。java:227)在org.eclipse.jetty.server.handler.contexthandler.dohandle(contexthandler。java:965)在org.eclipse.jetty.servlet.servlethandler.doscope(servlethandler。java:388)位于org.eclipse.jetty.server.session.sessionhandler.doscope(sessionhandler。java:187)在org.eclipse.jetty.server.handler.contexthandler.doscope(contexthandler。java:901)在org.eclipse.jetty.server.handler.scopedhandler.handle(scopedhandler。java:117)在org.eclipse.jetty.server.handler.handlerlist.handle(handlerlist。java:47)位于org.eclipse.jetty.server.handler.handlerwrapper.handle(handlerwrapper)。java:113)在org.eclipse.jetty.server.server.handle(server。java:352)在org.eclipse.jetty.server.httpconnection.handlerequest(httpconnection)上。java:596)在org.eclipse.jetty.server.httpconnection$requesthandler.headercomplete(httpconnection)。java:1048)在org.eclipse.jetty.http.httpparser.parsenext(httpparser。java:549)在org.eclipse.jetty.http.httpparser.parseavailable(httpparser。java:211)位于org.eclipse.jetty.server.httpconnection.handle(httpconnection.html)。java:425)在org.eclipse.jetty.io.nio.selectchannelendpoint.run(selectchannelendpoint。java:489)在org.eclipse.jetty.util.thread.queuedthreadpool$2.run(queuedthreadpool。java:436)在java.lang.thread.run(线程。java:745)原因:org.eclipse.jetty.io.eofexception位于org.eclipse.jetty.http.httpgenerator.flushbuffer(httpgenerator)。java:905)在org.eclipse.jetty.http.abstractgenerator.flush(抽象生成器)。java:427)位于org.eclipse.jetty.server.httpoutput.flush(httpoutput)。java:78)在org.eclipse.jetty.server.httpconnection$output.flush(httpconnection。java:1139)在org.eclipse.jetty.server.httpoutput.write(httpoutput。java:159)在org.eclipse.jetty.server.httpoutput.write(httpoutput。java:86)在java.io.bytearrayoutputstream.writeto(bytearrayoutputstream。java:154)在org.eclipse.jetty.server.httpwriter.write(httpwriter。java:258)在org.eclipse.jetty.server.httpwriter.write(httpwriter。java:107)在org.eclipse.jetty.io.uncheckedprintwriter.write(uncheckedprintwriter。java:271) ... 24更多原因:java.io.ioexception:sun.nio.ch.filedispatcherimpl.write0(本机方法)处的管道断开sun.nio.ch.socketdispatcher.write(socketdispatcher)。java:47)在sun.nio.ch.ioutil.writefromnativebuffer(ioutil。java:93)在sun.nio.ch.ioutil.write(ioutil。java:51)在sun.nio.ch.socketchannelimpl.write(socketchannelimpl。java:470)在org.eclipse.jetty.io.nio.channelendpoint.flush(channelendpoint。java:185)在org.eclipse.jetty.io.nio.selectchannelendpoint.flush(selectchannelendpoint。java:256)在org.eclipse.jetty.http.httpgenerator.flushbuffer(httpgenerator。java:849) ... 33个以上
我知道 java.io.IOException: Broken pipe
意味着jobmanager失去了某种连接,所以我猜整个作业都失败了,我必须重新启动它。虽然我认为这个进程不再运行了,但是webinterface仍然将它列为正在运行。另外,当我使用 jps
以识别我在群集中运行的进程。所以我的问题是,我的工作是否丢了,这个错误是偶然发生的,还是我的程序造成的。
编辑:我的任务管理器仍然每隔几秒钟发送一次心跳,而且似乎正在运行。
1条答案
按热度按时间fykwrbwg1#
这实际上是一个问题
JobManagerInfoServlet
,flink的web服务器,由于java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
. 因此,只有对服务器的get请求失败。这样的失败不应该影响当前正在运行的flink作业的执行。简单地刷新你的浏览器(使用flink的web ui)应该会发送另一个get请求,然后希望成功完成。