我正在尝试通过 Spark-Shell 运行一个简单的 Spark 作业,它看起来像
Spark-shell 的 BlockManager 侦听本地主机而不是配置的 IP
导致 Spark 作业失败的地址。抛出的异常是“无法连接到本地主机" .
这是我的配置:
机器1(ubunt64):Spark主控[192.168.253.136]
机器2(ubuntu64服务器):Spark Slave [192.168.253.137]
机器3(ubuntu64 server2):Spark Shell客户端[192.168.253.138]
火花版本:Spark-1.3.0-bin-hadoop2.4环境:乌班图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 上运行上面的代码,它就可以工作
正在运行,但在机器 1(Master)和机器 3(Spark Shell)上失败。
不知道为什么 Spark shell 监听本地主机而不是
配置的IP地址。我也在 .bashrc 中使用 Spark-env.sh 在机器 3 上设置了 SPARK_LOCAL_IP(导出 SPARK_LOCAL_IP=192.168.253.138)。我确认 Spark shell java 程序确实侦听端口 44015。不知道为什么 Spark shell 广播本地主机地址。
任何帮助解决此问题的帮助都将受到高度赞赏。大概我就是
缺少一些配置设置。
Logs:
斯卡拉> val textFile = sc.textFile("README.md")
15/04/22 18:15:22 INFO MemoryStore:使用 curMem=0、maxMem=280248975 调用 EnsureFreeSpace(163705)
15/04/22 18:15:22 INFO MemoryStore:块broadcast_0作为值存储在内存中(估计大小159.9 KB,可用267.1 MB)
15/04/22 18:15:22 INFO MemoryStore:使用 curMem=163705、maxMem=280248975 调用 EnsureFreeSpace(22692)
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:在本地主机上的内存中添加了broadcast_0_piece0:44015(大小:22.2 KB,免费:267.2 MB)
斯卡拉> textFile.count()
15/04/22 18:16:07 INFO DAGScheduler:提交阶段 0 中缺少的 2 个任务(README.md MapPartitionsRDD[1] at textFile at :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 中启动任务 1.0(TID 1,ubuntu64server,PROCESS_LOCAL,1326 字节)
15/04/22 18:16:23 警告 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)
在 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)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
在 java.lang.Thread.run(Thread.java:745)