我試圖通過spark-shell運行一個簡單的火花作業,它看起來像 火花外殼的BlockManager監聽本地主機而不是配置的IP地址 導致火花的地址工作失敗。拋出的異常是「無法連接到本地主機」。Spark Shell在本地主機上偵聽,而不是配置IP地址
這裏是我的配置:
機1(ubunt64):火花主[192.168.253.136]
機2(ubuntu64server):火花從[192.168.253.137]
機3(ubuntu64server2):火花殼客戶端[192.168.253.138]
火花VERSI於:火花1.3.0彬hadoop2.4 環境:的Ubuntu 14.04
源代碼,在星火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(主機)和機器3(Spark Shell)上失敗。
不確定爲什麼Spark殼會在本地主機上偵聽,而不是配置爲IP地址爲 。我在機器3上使用spark-env.sh以及.bashrc(導出SPARK_LOCAL_IP = 192.168.253.138)來設置SPARK_LOCAL_IP。我確認spark shell程序確實監聽端口44015.不知道爲什麼spark shell正在廣播本地主機地址。
任何幫助解決這個問題將不勝感激。可能我 缺少一些配置設置。
日誌:
階>VAL TEXTFILE = sc.textFile( 「README.md」)
15/04/22 18時15分22秒INFO MemoryStore的:ensureFreeSpace(163705)調用curMem = 0,MAXMEM = 280248975
15/04/22十八時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:在存儲器中添加broadcast_0_piece0在localhost:44015(尺寸:22.2 KB,免費:267.2 MB)
scala>textFile。計數()
15/04/22 18時16分07秒INFO DAGScheduler:從0期提交2級缺失的任務(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(TID 0,ubuntu64server,PROCESS_LOCAL,1326字節)中啓動任務0.0。
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(TID 0,ubuntu64server)中丟失任務0.0:java.io.IOException:未能連接到本地主機/ 127.0.0.1:44015 at org .apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:191) at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:156) at org.apache.spark.network .netty.NettyBlockTransferService $$ anon $ 1.createAndStart(NettyBlockTransferService.scala:78) at org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:140) at org.apache.spark.network.shuffle .RetryingBlockFetcher.access $ 200(RetryingBlockFetcher.java:43) at org.apac he.spark.network.shuffle.RetryingBlockFetcher $ 1.run(RetryingBlockFetcher.java:170) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run (FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) at java.lang .Thread.run(Thread.java:745)
有檢查你的/ etc/hosts文件條目嗎? – hnahak
謝謝@hnahak。 ubuntu64server2上的/ etc/hosts的內容(spark-shell主機)。 ** 192.168.253.138 ubuntu64server2 192.168.253.136 ubuntu64 192.168.253.137 ubuntu64server #127.0.0.1本地主機** 仍然得到了同樣的錯誤: * 15/4月23日5時52分29秒WARN TaskSetManager:失落的任務0.0階段0.0(TID 0,ubuntu64server):java.io.IOException:無法連接到本地主機/ 127.0.0.1:54083 * 我可以看到ubuntu64server2正在偵聽端口54083,但在主機上0.0.0.0 ** tcp 0 0 0.0.0.0:54083 0.0.0.0:* LISTEN * * – dxrodri