2015-04-22 77 views
1

我試圖通過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)

+0

有檢查你的/ etc/hosts文件條目嗎? – hnahak

+0

謝謝@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

回答

0

通過在shell啓動時提供spark主機地址(或者可以在spark-defaults.conf中)找到解決此BlockManager localhost問題的解決方法。

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

這樣一來,我沒有停止火花上下文和原始上下文能夠從卡桑德拉表中讀取文件和讀取數據。

這裏的圖塊管理員在本地主機上(停止性和動態性方面的),它失敗,聽日誌「無法連接異常」

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) 

比較監聽實際的服務器名稱(如果火花主在提供命令行),其工作原理

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) 

看起來像在圖塊管理員代碼中的錯誤,當在殼是動態創建的上下文。

希望這可以幫助別人。

相關問題