Spark Shell侦听localhost而不是配置的IP地址

时间:2015-04-22 22:26:39

标签: apache-spark

我试图通过spark-shell运行一个简单的火花作业,它看起来像 spark-shell的BlockManager侦听localhost而不是配置的IP 导致火花作业失败的地址。抛出的异常是" 无法连接到localhost "

这是我的配置:

Machine 1(ubunt64):Spark master [192.168.253.136]

机器2(ubuntu64server):Spark Slave [192.168.253.137]

机器3(ubuntu64server2):Spark Shell客户端[192.168.253.138]

Spark版本: spark-1.3.0-bin-hadoop2.4 环境: Ubuntu 14.04

要在Spark Shell中执行的源代码:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext

    var conf = new SparkConf().setMaster("spark://192.168.253.136:7077")
    conf.set("spark.driver.host","192.168.253.138")
    conf.set("spark.local.ip","192.168.253.138")
    sc.stop
    var sc = new SparkContext(conf)
    val textFile = sc.textFile("README.md")
    textFile.count()

如果我在奴隶所在的机器2上运行它,上面的代码只是工作文件 正在运行,但它在Machine 1(Master)和Machine 3(Spark Shell)上失败。

不确定为什么spark shell会在localhost上侦听而不是 配置的IP地址。我在机器3上使用spark-env.sh以及.bashrc(导出SPARK_LOCAL_IP = 192.168.253.138)设置了SPARK_LOCAL_IP。我确认spark shell java程序确实在端口44015上侦听。不确定为什么spark shell正在广播localhost地址。

我们非常感谢您解决此问题的任何帮助。可能是我 缺少一些配置设置。

日志:

scala> val textFile = sc.textFile(" README.md")

15/04/22 18:15:22 INFO MemoryStore:ensureFreeSpace(163705)调用curMem = 0,maxMem = 280248975

15/04/22 18:15:22 INFO MemoryStore:阻止broadcast_0存储为内存中的值(估计大小为159.9 KB,自由267.1 MB)

15/04/22 18:15:22 INFO MemoryStore:ensureFreeSpace(22692)调用curMem = 163705,maxMem = 280248975

15/04/22 18:15:22 INFO MemoryStore:阻止broadcast_0_piece0作为字节存储在内存中(估计大小为22.2 KB,免费为267.1 MB)

15/04/22 18:15:22 INFO BlockManagerInfo:在localhost上添加了broadcast_0_piece0内存:44015(大小:22.2 KB,免费:267.2 MB)

scala> textFile.count()

15/04/22 18:16:07 INFO DAGScheduler:从第0阶段提交2个缺失的任务(在textFile上的README.md MapPartitionsRDD [1]:25)

15/04/22 18:16:07 INFO TaskSchedulerImpl:添加任务集0.0,包含2个任务

15/04/22 18:16:08 INFO TaskSetManager:在阶段0.0中启动任务0.0(TID 0,ubuntu64server,PROCESS_LOCAL,1326字节)

15/04/22 18:16:23 INFO TaskSetManager:在阶段0.0(TID 1,ubuntu64server,PROCESS_LOCAL,1326字节)中启动任务1.0

15/04/22 18:16:23 WARN TaskSetManager:阶段0.0中丢失的任务0.0(TID 0,ubuntu64server):java.io.IOException:无法连接到localhost / 127.0.0.1:44015         在org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:191)         在org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:156)     在org.apache.spark.network.netty.NettyBlockTransferService $$ anon $ 1.createAndStart(NettyBlockTransferService.scala:78)         在org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:140)         在org.apache.spark.network.shuffle.RetryingBlockFetcher.access $ 200(RetryingBlockFetcher.java:43)         在org.apache.spark.network.shuffle.RetryingBlockFetcher $ 1.run(RetryingBlockFetcher.java:170)         at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471)         在java.util.concurrent.FutureTask.run(FutureTask.java:262)         在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)         at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)         在java.lang.Thread.run(Thread.java:745)

1 个答案:

答案 0 :(得分:1)

通过在shell启动时提供spark主地址(或者可以是spark-defaults.conf),找到解决此BlockManager本地主机问题的方法。

./spark-shell --master spark://192.168.253.136:7077 

这样,我没有必要停止spark上下文,原始上下文能够读取文件以及从Cassandra表中读取数据。

以下是BlockManager监听localhost(停止和动态创建上下文)的日志,该日志因&#34而失败;无法连接异常"

15/04/25 07:10:27 INFO BlockManagerInfo: Added broadcast_1_piece0 in memory on localhost:40235 (size: 1966.0 B, free: 267.2 MB)

与侦听实际服务器名称(如果命令行提供的spark master)进行比较

15/04/25 07:12:47 INFO BlockManagerInfo: Added broadcast_1_piece0 in memory on ubuntu64server2:33301 (size: 1966.0 B, free: 267.2 MB)

在shell中动态创建上下文时,看起来像是BlockManager代码中的错误。

希望这有助于某人。