2015-09-25 38 views
5

我只有一臺機器,並且想要使用mesos集羣模式運行spark任務。運行一組節點可能更有意義,但我主要想先測試一下mesos以檢查它是否能夠更有效地利用資源(同時運行多個spark作業而沒有靜態分區)。我嘗試了很多方法,但沒有成功。這是我做的:使用分派器的Spark Mesos集羣模式

  1. 構建mesos並運行兩個mesos主站和從站(同一臺機器上的兩個從站)。

    sudo ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos 
    sudo ./bin/mesos-slave.sh --master=127.0.0.1:5050 --port=5051 --work_dir=/tmp/mesos1 
    sudo ./bin/mesos-slave.sh --master=127.0.0.1:5050 --port=5052 --work_dir=/tmp/mesos2 
    
  2. 運行火花mesos-調度

    sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050 
    
  3. 與調度員作爲主站網址提交的應用程序。

    spark-submit --master mesos://localhost:7077 <other-config> <jar file> 
    

但它不工作:

E0925 17:30:30.158846 807608320 socket.hpp:174] Shutdown failed on fd=61: Socket is not connected [57] 
    E0925 17:30:30.159545 807608320 socket.hpp:174] Shutdown failed on fd=62: Socket is not connected [57] 

如果我用火花提交--deploy模式的集羣,然後我得到了另一條錯誤消息:

Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server 

它如果我不使用調度程序,但直接使用mesos master url:--master mesos:// localhost:5050(client mode)。根據documentation,Mesos羣集不支持羣集模式,但它們爲羣集模式here提供了另一條指令。所以這有點令人困惑?我的問題是:

  1. 我該如何得到它的作品?
  2. 如果我直接從主節點提交應用程序/ jar,我應該使用客戶端模式而不是集羣模式嗎?
  3. 如果我有一臺計算機,我應該產生一個或多個mesos slave進程。基本上,我有一些spark工作,並不想做靜態資源分區。但是如果在沒有靜態分區的情況下使用mesos,它似乎要慢得多?

謝謝。

回答

1

我使用你的場景來嘗試,它可能是工作。 有一點不同,我使用ip地址來代替「localhost」和「127.0.0.1」 所以只需再試一次並檢查http://your_dispatcher:8081(在瀏覽器上)是否存在。

這是我的火花提交命令:

$spark-submit --deploy-mode cluster --master mesos://192.168.11.79:7077 --class "SimpleApp" SimpleAppV2.jar 

如果成功,你可以看到如下

{ 
    "action" : "CreateSubmissionResponse", 
    "serverSparkVersion" : "1.5.0", 
    "submissionId" : "driver-20151006164749-0001", 
    "success" : true 
} 

我收到了你的錯誤日誌是你的,我重新啓動機器,然後重試步。它也工作。

1

似乎有兩件事讓你感到困惑:在羣集中啓動Spark應用程序(與本地相反)並將驅動程序啓動到羣集中。

Submitting Applications頂部:

Spark中的bin目錄中的火花提交腳本用於在羣集上啓動應用程序。它可以通過統一的界面使用Spark支持的所有集羣管理器,因此您不必爲每個應用程序專門配置應用程序。

因此,Mesos是受支持的羣集管理器之一,因此您可以run Spark apps on a Mesos cluster

作爲寫入時間不支持的Mesos是將驅動程序啓動到集羣中,這是./bin/spark-submit的命令行參數--deploy-mode指定的內容。由於--deploy-mode默認值是client你可以忽略它,或者如果你要明確指定,然後使用:

./bin/spark-submit --deploy-mode client ... 
相關問題