我正在多节点集群上工作,其中四个从节点分别名为slave01,slave02,slave03和slave04,一个主节点作为主节点

当我在 map task hadoop期间拔出网络电缆时,等待状态更新100秒(由于其值为100000的属性)

之后,我可以看到maptask失败,并且hadoop启动了容器清理,这花费了超过10分钟的时间,并且它也没有计划失败的任务在任何地方。我得到了从应用程序主节点到丢失节点的无路由到主机异常的错误。任务在另一个节点上获取计划。

我想减少尝试清理容器的时间,以便可以在任何节点上的maptask超时后立即安排任务。

请帮助我,如何通过设置配置来做到这一点。

我正在附加应用程序主日志,在该任务中,我在map任务期间删除了slave01,在这种情况下,reduce任务的运行数量为1。

AttemptID:attempt_1463201584280_0004_m_000002_0在100秒后超时在容器丢失的节点上释放的容器失败容器container_1463201584280_0004_01_000004:java.net.NoRouteToHostException:由于套接字超时异常,从slave02 / 172.31.132.107到slave01:58838的主机路由失败:套接字超时异常:java.net。 NoRouteToHostException:没有路由到主机;有关更多详细信息,请参见:位于sun.reflect.GeneratedConstructorAccessor51.newInstance(未知源)处的http://wiki.apache.org/hadoop/NoRouteToHost,位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)处的java.lang.reflect.Constructor.newInstance(Constructor.java:422)在org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)在org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:757)在org.apache.hadoop.ipc.Client.call (Client.java:1473),位于org.apache.hadoop.ipc.Client.call(Client.java:1400),位于org.apache.hadoop.ipc.ProtobufRpcEngine $ Invoker.invoke(ProtobufRpcEngine.java:232)。 org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.stopContainers(ContainerManagementProtocolPBClientImpl.java:110)上的sun.proxy。$ Proxy37.stopContainers(未知源)在sun.reflect.GeneratedMethodAccessor18.invoke(未知源) ),位于java.lang.reflect.Method.invo的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)上的ke(Method.java:497)在org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)上的ke(Method.java:497)在org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl $ Container.kill(ContainerLauncherImpl.java:206)的com.sun.proxy。$ Proxy38.stopContainers(未知源)处在org.apache.hadoop.mapreduce .v2.app.launcher.ContainerLauncherImpl $ EventProcessor.run(ContainerLauncherImpl.java:373)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor .java:617),位于java.lang.Thread.run(Thread.java:745),原因:java.net.NoRouteToHostException:在sun处没有指向sun.nio.ch.SocketChannelImpl.checkConnect(本机方法)的主机的路由。 org.apa.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)上的nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)在org.apa上位于org.apache.hadoop.net.NetUtils.connect(NetUtils.java:494)的che.hadoop.net.NetUtils.connect(NetUtils.java:530)在org.apache.hadoop.ipc.Client $ Connection.setupConnection( org.apache.hadoop.ipc.Client $ Connection.setupIOstreams(Client.java:706)的org.apache.hadoop.ipc.Client $ Connection.access $ 2800(Client.java:369)的Client.java:608) org.apache.hadoop.ipc.Client.call(Client.java:1439)的org.apache.hadoop.ipc.Client.getConnection(Client.java:1522)...还有15个

最佳答案

发生这种情况的原因是hadoop 2.6.3中的一个错误,其中在ipc和yarn的两个级别上重试了连接尝试使用2.6.4或下载补丁程序,它将解决。

07-24 19:04
查看更多