web-dev-qa-db-ja.com

Sparkのワーカーがマスターに接続できません。Akkaに問題がありますか?

Sparkスタンドアロンモードを2つの仮想マシンを持つクラスターにインストールしたい。
spark-0.9.1-bin-hadoop1のバージョンでは、各VMで正常にspark-Shellを実行します。私は 公式ドキュメント に従って、1つのvm(ip:xx.xx.xx.223)をマスターとワーカーの両方として作成し、もう1つ(ip:xx.xx.xx.224)をワーカーとして作成しますのみ。
しかし、224-ip vmは223-ip vmに接続できません。 223(Master)のマスターログが続きます。

[@tc-52-223 logs]# tail -100f spark-root-org.Apache.spark.deploy.master.Master-1-tc-52-223.out
Spark Command: /usr/local/jdk/bin/Java -cp :/data/test/spark-0.9.1-bin-hadoop1/conf:/data/test/spark-0.9.1-bin-hadoop1/Assembly/target/scala-2.10/spark-Assembly_2.10-0.9.1-hadoop1.0.4.jar -Dspark.akka.logLifecycleEvents=true -Djava.library.path= -Xms512m -Xmx512m org.Apache.spark.deploy.master.Master --ip 10.11.52.223 --port 7077 --webui-port 8080

log4j:WARN No appenders could be found for logger (akka.event.slf4j.Slf4jLogger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
14/04/14 22:17:03 INFO Master: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:03 INFO Master: Starting Spark master at spark://10.11.52.223:7077
14/04/14 22:17:03 INFO MasterWebUI: Started Master web UI at http://tc-52-223:8080
14/04/14 22:17:03 INFO Master: I have been elected leader! New state: ALIVE
14/04/14 22:17:06 INFO Master: Registering worker tc-52-223:20599 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisteredWorker] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:17:26 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:26 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisterWorkerFailed] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:17:46 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:46 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisterWorkerFailed] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 INFO LocalActorRef: Message [akka.remote.transport.ActorTransportAdapter$DisassociateUnderlying] from Actor[akka://sparkMaster/deadLetters] to Actor[akka://sparkMaster/system/transports/akkaprotocolmanager.tcp0/akkaProtocol-tcp%3A%2F%2FsparkMaster%4010.11.52.224%3A61550-1#646150938] was not delivered. [4] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:19:03 WARN Master: Removing worker-20140414221705-tc_52_224-21371 because we got no heartbeat in 60 seconds
14/04/14 22:19:03 INFO Master: Removing worker worker-20140414221705-tc_52_224-21371 on tc_52_224:21371  

223(ワーカー)のワーカーログが続きます。

14/04/14 22:17:06 INFO Worker: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:06 INFO Worker: Starting Spark worker tc-52-223:20599 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Worker: Spark home: /data/test/spark-0.9.1-bin-hadoop1
14/04/14 22:17:06 INFO WorkerWebUI: Started Worker web UI at http://tc-52-223:8081
14/04/14 22:17:06 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:06 INFO Worker: Successfully registered with master spark://xx.xx.52.223:7077

224(Worker)の作業ログが続きます。

Spark Command: /usr/local/jdk/bin/Java -cp :/data/test/spark-0.9.1-bin-hadoop1/conf:/data/test/spark-0.9.1-bin-hadoop1/Assembly/target/scala-2.10/spark-Assembly_2.10-0.9.1-hadoop1.0.4.jar -Dspark.akka.logLifecycleEvents=true -Djava.library.path= -Xms512m -Xmx512m org.Apache.spark.deploy.worker.Worker spark://10.11.52.223:7077 --webui-port 8081
========================================

log4j:WARN No appenders could be found for logger (akka.event.slf4j.Slf4jLogger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
14/04/14 22:17:06 INFO Worker: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:06 INFO Worker: Starting Spark worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Worker: Spark home: /data/test/spark-0.9.1-bin-hadoop1
14/04/14 22:17:06 INFO WorkerWebUI: Started Worker web UI at http://tc_52_224:8081
14/04/14 22:17:06 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:26 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:46 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:18:06 ERROR Worker: All masters are unresponsive! Giving up.

以下は私のspark-env.shです:

Java_HOME=/usr/local/jdk
export SPARK_MASTER_IP=tc-52-223
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=4g
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
export SPARK_LOCAL_IP=tc-52-223

私は多くのソリューションをグーグルで検索しましたが、それらは機能しません。私を助けてください。

13
FatGhosta

これが同じ問題であるかどうかはわかりませんが、SPARK_MASTER_IPをsparkのバインド先と同じものに設定してみることをお勧めします。この例では、 10.11.52.223ではなくtc-52-223にしてください。

8080でマスターノードのウェブUIにアクセスしたときに表示されるものと同じである必要があります。次のようなもの:Spark Master at spark://ec2-XX-XX-XXX-XXX.compute-1.amazonaws.com:7077

9
Klugscheißer

「接続が拒否されました」という例外が発生した場合は、

=>マスターは特定のホストで実行されています

netstat -at | grep 7077

次のようなものが表示されます。

tcp        0      0 akhldz.master.io:7077 *:*             LISTEN  

その場合は、ワーカーマシンからホストakhldz.master.ioを実行します(akhldz.master.ioをマスターホストに置き換えます。問題が発生した場合は、/ etc/hostsファイルにホストエントリを追加します)
telnet akhldz.master.io 7077(これが接続されていない場合、ワーカーも接続しません。)

=>/etc/hostsにホストエントリを追加する

ワーカーマシンから/ etc/hostsを開き、次のエントリを追加します(例)

192.168.100.20   akhldz.master.io

PS:上記の場合、Pillisは同じホスト名を持つ2つのIPアドレスを持っていました。例:

192.168.100.40  s1.machine.org
192.168.100.41  s1.machine.org

お役に立てば幸いです。

6
AkhlD

多くの回答と可能な解決策があり、この質問は少し古くなっていますが、完全を期すために、既知のSpark IPアドレスに解決されるホスト名に関するバグがあります。私は提示していません。これはすべてのケースで完全な答えですが、すべてのIPのみを使用するベースラインで試して、単一の構成SPARK_MASTER_IPのみを使用することをお勧めします。これら2つのプラクティスだけで、クラスターを機能させ、他のすべての構成、またはホスト名を使用します、ちょうど物事をごまかしているようです。

そのため、spark-env.shでSPARK_WORKER_IPを削除し、SPARK_MASTER_IPをホスト名ではなくIPアドレスに変更します。

この回答では、これについて詳しく説明しました。

より完全にするために、ここにその答えの一部があります:

Sparkマスターが実行されているボックスにpingできますか?マスターからワーカーにpingできますか?さらに重要なことに、パスワードなしでsshにマスターボックスからのワーカー?1.5.2のドキュメントに従って、秘密鍵でそれを行うことができ、かつconf/slavesファイルにワーカーを入力してもらう必要があります。関連する段落を終わり。

ワーカーがマスターに連絡できるが、マスターはワーカーに戻ることができないため、接続が行われていないように見える状況が発生する可能性があります。両方向を確認してください。

私はマスターノードのスレーブファイルとパスワードなしのsshがあなたが見ているものと同様のエラーを引き起こす可能性があると思います。

私がクロスリンクした答えによれば、 古いバグもあります ですが、そのバグがどのように解決されたかはわかりません。

2
JimLohse

sparkワーカーのポートも設定します。例:SPARK_WORKER_PORT=5078 ...正しいインストールについて、 spark-installation リンクを確認します

0
Arnav

基本的にポートはブロックされるため、マスターからワーカーへの通信は遮断されます。ここをチェック https://spark.Apache.org/docs/latest/configuration.html#networking

[ネットワーク]セクションで、一部のポートがデフォルトrandomであることがわかります。以下のように選択して設定できます。

val conf = new SparkConf() 
    .setMaster(master) 
    .setAppName("namexxx") 
    .set("spark.driver.port", "51810") 
    .set("spark.fileserver.port", "51811") 
    .set("spark.broadcast.port", "51812") 
    .set("spark.replClassServer.port", "51813") 
    .set("spark.blockManager.port", "51814") 
    .set("spark.executor.port", "51815") 
0
keypoint

私の場合、次のようにして「ローカルホストのホスト名とIPアドレスのエントリを/ etc/hostsファイルに追加する」という問題を解決できました。

クラスターの場合、マスターには次のような/ etc/hostsコンテンツがあります。

127.0.0.1       master.yourhost.com localhost localhost4 localhost.localdomain
192.168.1.10    slave1.yourhost.com
192.168.1.9     master.yourhost.com **# this line solved the problem**

次に、slave1.yourhost.comマシンでも同じことを行います。

お役に立てれば..

0
ridonekorkmaz

同じ問題に直面していた。以下の手順で解決できます。最初に/etc/hostsファイルとコメント127.0.1.1 住所 。その後、spark/sbinディレクトリ、次にこれらのコマンドでsparkセッションを開始する必要があります、

./start-all.sh 

または、./start-master.shおよび./start-slave.sh 同様に 。 spark-Shell or pysparkまたはその他のsparkコンポーネントの場合、自動的にsparkコンテキストオブジェクトscが作成されます。

0
Shubham Sharma