【问题标题】:Spark Shell on Yarn getting connection refused error纱线上的 Spark Shell 获得连接被拒绝错误
【发布时间】:2018-07-23 15:21:26
【问题描述】:

我在 Ubuntu 14.04 上有 Hadoop 2.7.0 和 Spark 2.0.0。我有一个主节点和两个从节点。所有守护进程都启动良好。当我在没有 Yarn 的情况下启动 spark-shell 时,以下运行正常

scala> val inputRDD = sc.textFile("/spark_examples/war_and_peace.txt")
inputRDD: org.apache.spark.rdd.RDD[String] = /spark_examples/war_and_peace.txt MapPartitionsRDD[1] at textFile at <console>:24

scala> inputRDD.collect
res0: Array[String] = Array(The Project Gutenberg EBook of War and Peace, by Leo Tolstoy, "", This eBook is for the use of anyone anywhere at no cost and with almost, no restrictions whatsoever.  You may copy it, give it away or re-use it, under the terms of the Project Gutenberg License included with this, eBook or online at www.gutenberg.org, "", "", Title: War and Peace, "", Author: Leo Tolstoy, "", Translators: Louise and Aylmer Maude, "", Posting Date: January 10, 2009 [EBook #2600], "", Last Updated: March 15, 2013, "", Language: English, "", Character set encoding: ASCII, "", *** START OF THIS PROJECT GUTENBERG EBOOK WAR AND PEACE ***, "", An Anonymous Volunteer, and David Widger, "", "", "", "", "", WAR AND PEACE, "", By Leo Tolstoy/Tolstoi, "", CONTENTS, "", BOOK ONE: 1805, "",...
scala> 

但是当我用 Yarn 启动 spark-shell 时,它会抛出以下错误

scala> val inputRDD = sc.textFile("/spark_examples/war_and_peace.txt")
inputRDD: org.apache.spark.rdd.RDD[String] = /spark_examples/war_and_peace.txt MapPartitionsRDD[1] at textFile at <console>:24

scala> inputRDD.collect
[Stage 0:>                                                          (0 + 2) / 2]17/04/03 21:31:04 ERROR shuffle.RetryingBlockFetcher: Exception while beginning fetch of 1 outstanding blocks 
java.io.IOException: Failed to connect to HadoopSlave2/192.168.78.136:44749
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:228)
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:179)
    at org.apache.spark.network.netty.NettyBlockTransferService$$anon$1.createAndStart(NettyBlockTransferService.scala:96)
    at org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:140)
    at org.apache.spark.network.shuffle.RetryingBlockFetcher.start(RetryingBlockFetcher.java:120)
    at org.apache.spark.network.netty.NettyBlockTransferService.fetchBlocks(NettyBlockTransferService.scala:105)
    at org.apache.spark.network.BlockTransferService.fetchBlockSync(BlockTransferService.scala:92)
    at org.apache.spark.storage.BlockManager.getRemoteBytes(BlockManager.scala:554)
    at org.apache.spark.scheduler.TaskResultGetter$$anon$2$$anonfun$run$1.apply$mcV$sp(TaskResultGetter.scala:76)
    at org.apache.spark.scheduler.TaskResultGetter$$anon$2$$anonfun$run$1.apply(TaskResultGetter.scala:57)
    at org.apache.spark.scheduler.TaskResultGetter$$anon$2$$anonfun$run$1.apply(TaskResultGetter.scala:57)
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1857)
    at org.apache.spark.scheduler.TaskResultGetter$$anon$2.run(TaskResultGetter.scala:56)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: HadoopSlave2/192.168.78.136:44749
    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:224)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:289)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
    ... 1 more

我是否遗漏了配置中的任何内容?

【问题讨论】:

    标签: apache-spark hadoop-yarn connection-refused


    【解决方案1】:

    Spark 使用随机端口进行驱动程序和执行程序之间的内部通信,这可能会被您的防火墙阻止。尝试打开集群节点之间的端口。

    如果您在集群内对防火墙规则要求严格,也可以使用固定端口,

    val conf = new SparkConf() 
        .setMaster(master) 
        .setAppName("namexxx") 
        .set("spark.driver.port", "51810") 
        .set("spark.fileserver.port", "51811") 
        .set("spark.broadcast.port", "51812") 
        .set("spark.replClassServer.port", "51813") 
        .set("spark.blockManager.port", "51814") 
        .set("spark.executor.port", "51815")  
    

    参考这里,https://stackoverflow.com/a/30036642/3080158

    【讨论】:

    • 谢谢@RBanerjee。由于我使用的是 spark-shell,因此我已使用 spark.driver.port 51810 spark.fileserver.port 51811 spark.broadcast.port 51812 spark.replClassServer.port 51813 spark.blockManager.port 51814 spark.executor.port 51815 更新了 spark-defaults.conf,但在使用 sudo ufw status verbose 检查防火墙的新端口上仍然出现错误状态显示为非活动状态,因此不应有任何防火墙。还有其他建议吗?谢谢。
    • 节点是直接通过路由器相互连接,还是通过任何公司网络或受限网络连接。在这种情况下,您需要在网络级别检查防火墙。
    • 您好,这些是在单个物理机上运行的虚拟机。我正在使用 VMWare Player 12。VM 配置为使用 NAT 进行网络连接。我没有在 VMWare 中指定任何规则。我可以通过 SSH 连接到这些虚拟机中的任何一个。从其他虚拟机。 Spark 的 8080 页面显示所有节点运行良好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2021-12-13
    • 2017-08-18
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多