Apache spark ShuffleBlockFetcherIterator何时抛出“无法获取块”异常?

Apache spark ShuffleBlockFetcherIterator何时抛出“无法获取块”异常?,apache-spark,Apache Spark,在以集群模式运行的spark应用程序中,我得到以下异常。我知道这可能是因为金刚砂的问题。但正如错误所说,它无法连接到节点。但我确信节点是可用的,并且可以连接。有人知道这个错误的主要原因是什么以及如何解决它吗 17/10/31 17:10:54 ERROR ShuffleBlockFetcherIterator: Failed to get block(s) from AUPER01-02-10-12-0.prod.vroc.com.au:36787 java.io.IOException: Fa

在以集群模式运行的spark应用程序中,我得到以下异常。我知道这可能是因为金刚砂的问题。但正如错误所说,它无法连接到节点。但我确信节点是可用的,并且可以连接。有人知道这个错误的主要原因是什么以及如何解决它吗

17/10/31 17:10:54 ERROR ShuffleBlockFetcherIterator: Failed to get block(s) from AUPER01-02-10-12-0.prod.vroc.com.au:36787
java.io.IOException: Failed to connect to AUPER01-02-10-12-0.prod.vroc.com.au/192.168.11.22:36787
        at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:232)
        at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:182)
        at org.apache.spark.network.netty.NettyBlockTransferService$$anon$1.createAndStart(NettyBlockTransferService.scala:97)
        at org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:141)
        at org.apache.spark.network.shuffle.RetryingBlockFetcher.access$200(RetryingBlockFetcher.java:43)
        at org.apache.spark.network.shuffle.RetryingBlockFetcher$1.run(RetryingBlockFetcher.java:171)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
        at java.lang.Thread.run(Thread.java:745)
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: AUPER01-02-10-12-0.prod.vroc.com.au/192.168.11.22:36787
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
        at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:257)
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:291)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:631)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:566)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
        ... 2 more

看起来,其中一名执行者死亡,而其他执行者试图从早期的洗牌阶段拉积木,以完成一个火花作业

在spark将spark应用程序提交到集群之后,该应用程序将获得一组供执行者使用的机器。它们负责执行任务并将其结果缓存在内存和/或磁盘中

每个执行者都有自己的BlockManager,负责将数据集作为块进行管理

Spark应用程序中的BlockManager必须全部可用,否则Spark应用程序将重新触发任务执行


是一个Scala迭代器,用于从本地和远程区块管理器获取多个洗牌块,也称为洗牌映射输出。

似乎其中一个执行器死亡,而其他执行器试图从早期洗牌阶段提取块以完成Spark作业

在spark将spark应用程序提交到集群之后,该应用程序将获得一组供执行者使用的机器。它们负责执行任务并将其结果缓存在内存和/或磁盘中

每个执行者都有自己的BlockManager,负责将数据集作为块进行管理

Spark应用程序中的BlockManager必须全部可用,否则Spark应用程序将重新触发任务执行

是一个Scala迭代器,用于从本地和远程块管理器获取多个无序块,也称为无序映射输出