2015-09-25 12 views
5

私は1台のマシンしか持っておらず、メソス・クラスタ・モードでスパーク・ジョブを実行したい。ノードのクラスタで実行する方が意味があるかもしれませんが、主に、静的分割を行わずに同時に複数のスパークジョブを実行することで、リソースをより効率的に利用できるかどうかを確認するために、まずメスをテストします。私はいくつかの方法を試みましたが、成功しませんでした。ここでは、私がやったことです:ディスパッチャを使用したスパーク・メゾ・クラスタ・モード

  1. は(同じマシンで2人の奴隷)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. マスターURLとしてディスパッチャでアプリを提出します。

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

しかし、それは仕事をdoesntの:

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マスターURLを使用すると、完全に動作します:--master mesos:// localhost:5050(クライアントモード)。 documentationによれば、クラスタモードはMesosクラスタではサポートされていませんが、クラスタモードの別の命令はhereです。それは混乱の種ですか?私の質問は次のとおりです:

  1. 私はそれをどのように動かすことができますか?
  2. マスターノードからapp/jarを直接送信すると、クラスタモードではなくクライアントモードを使用する必要がありますか?
  3. 私は1台のコンピュータを持っている場合、私は1つ以上のmesosスレーブプロセスを生成する必要があります。基本的に、私はsparkの仕事の数があり、リソースの静的なパーティショニングをしたくありません。しかし、静的パーティショニングなしでメソスを使用すると、はるかに遅いようですか?

ありがとうございました。

答えて

1

あなたのシナリオを試してみると、うまくいく可能性があります。 「localhost」と「127.0.0.1」の代わりにIPアドレスを使用する もう一度試して、http://your_dispatcher:8081(ブラウザ上)が存在する場合はそれを確認してください。

これは私の火花submitコマンドです:あなたは、私はマシンを再起動し、あなたを再試行として、私はあなたのエラーログを得たとき

$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アプリケーションを起動し、ドライバをクラスタに起動するという2つのことが混乱しているようです。Submitting Applicationsの上から

スパークのbinディレクトリに火花提出したスクリプトは、クラスタ上でアプリケーションを起動するために使用されます。 Sparkのサポートされているすべてのクラスタマネージャを統一されたインターフェイスで使用できるため、アプリケーションごとに特別な設定を行う必要はありません。

したがって、Mesosはサポートされているクラスタマネージャの1つで、run Spark apps on a Mesos clusterです。

書き込み時にサポートされていないMesosがドライバをクラスタに起動しているのは、コマンドライン引数--deploy-mode./bin/spark-submitのものです。 --deploy-modeのデフォルト値は、あなたがそれを省略するか、明示的に指定したい場合は、その後、使用することができますclientですので:

./bin/spark-submit --deploy-mode client ... 
関連する問題