2017-05-20 5 views
1

私はspark 2.1.1を2台のマシンにインストールしましたが、の相対的な場所はです。つまり、NTFSドライブのどこかにインストールしたマシンと、ext4ドライブにインストールしたマシンです。私はスタンドアロンモードでクラスタを2つのスレーブと1つのマシン上に1つのスレーブと1つのスレーブと他のマシンに1つのスレーブを持つことによってマスターを開始しようとしています。start-all.shを使用して、(マスタよりも)別のSPARK_HOMEを使用するスタンドアロンワーカーを起動する方法?

私はマスターノード上start-all.shスクリプトを経由して、このクラスタを起動しようとすると、私は次のエラーを取得する: -

192.168.1.154: bash: line 0: cd: /home/<somePath>/spark-2.1.1-bin-hadoop2.7: No such file or directory 

私はそれぞれのbashrcファイルにSPARK_HOME適切に設定しています。以下は、(1つのマスター+ 1つのスレーブマシンで)私の奴隷ファイル

localhost 
192.168.1.154 

私はリモートからssh経由で1つのスレーブマシンにログインすることができます。 Sparkクラスタを各マシンで個別に実行することができます。

start-all.shスクリプトを使用してマスターマシンからスレーブをリモートで起動しようとすると、スパークがマスターノードにインストールされている場所に移動しようとしていますが、スレーブノードではスパークが別の場所、それは失敗します。誰も私にこの問題を解決する方法を教えてもらえますか? start-all.sh

答えて

1

次の項目を見つけることができます:スタンドアロンのマスターのスパークインストールとは何の関係もありません

if [ -z "${SPARK_HOME}" ]; then 
    export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)" 
fi 

# Load the Spark configuration 
. "${SPARK_HOME}/sbin/spark-config.sh" 

# Start Master 
"${SPARK_HOME}/sbin"/start-master.sh 

# Start Workers 
"${SPARK_HOME}/sbin"/start-slaves.sh 

start-all.shは、グローバルに定義したすべてのSPARK_HOMEを単純に使用し、スタンドアロンのマスターとワーカー用に、クラスタ内のすべてのノードでそれを使用します。

あなたのケースでは、スタンドアロンマスターを起動するカスタムスタートアップスクリプトとそれぞれのSPARK_HOME env varsを作成することをお勧めします。

start-slaves.sh(ソースhere)は、単純に次のことを行います。

cd "${SPARK_HOME}" \; "${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT" 

だからそこに行くくらいの魔法はありませんが、sshへのすべてのノードに、コマンドラインを実行します。


私は私もこのためAnsibleを使用したいと思います

0

〜/ .bashrを確認してください。最後に、あなたがあなたのbashrcに環境を更新する必要が

export JAVA_HOME=/usr/local/java/jdk1.8.0_121 
export JRE_HOME=$JAVA_HOME/jre 
export SCALA_HOME=/usr/local/src/scala/scala-2.12.1 
export SPARK_HOME=/usr/local/spark/2.1.0 
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin 

:あなたは下の私のbashrcに見ることができ

source ~/.bashrc 
+0

は、あなたの応答をありがとうございました。しかし私は厳密に私の質問には関係しません。とにかくSPARK_HOMEは両方のマシンで正しく設定されています – opensam

関連する問題