4

私は Spark の初心者で、アプリケーションの送信中に問題が発生しました。Spark を使用する 2 つのスレーブ、zookeeper を使用する 1 つのノード、および kafka を使用する 1 つのノードでマスター ノードをセットアップしました。Python でスパーク ストリーミングを使用して、kafka wordcount の例の修正版を起動したいと考えていました。

アプリケーションを送信するには、ssh でマスター Spark ノードに接続し、<path to spark home>/bin/spark-submit. IP でマスター ノードを指定すると、すべて問題なく、アプリケーションは kafka からのメッセージを正しく消費し、アプリケーションが両方のスレーブで正しく実行されていることを SparkUI から確認できます。

./bin/spark-submit --master spark://<spark master ip>:7077 --jars ./external/spark-streaming-kafka-assembly_2.10-1.3.1.jar ./examples/src/main/python/streaming/kafka_wordcount.py <zookeeper ip>:2181 test

しかし、ホスト名でマスター ノードを指定すると、次のようになります。

./bin/spark-submit --master spark://spark-master01:7077 --jars ./external/spark-streaming-kafka-assembly_2.10-1.3.1.jar ./examples/src/main/python/streaming/kafka_wordcount.py zookeeper01:2181 test

次に、次のログでハングします。

15/05/27 02:01:58 INFO AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@spark-master01:7077/user/Master...
15/05/27 02:02:18 INFO AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@spark-master01:7077/user/Master...
15/05/27 02:02:38 INFO AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@spark-master01:7077/user/Master...
15/05/27 02:02:58 ERROR SparkDeploySchedulerBackend: Application has been killed. Reason: All masters are unresponsive! Giving up.
15/05/27 02:02:58 ERROR TaskSchedulerImpl: Exiting due to error from cluster scheduler: All masters are unresponsive! Giving up.
15/05/27 02:02:58 WARN SparkDeploySchedulerBackend: Application ID is not initialized yet.

私の/etc/hostsファイルは次のようになります。

<spark master ip> spark-master01
127.0.0.1 localhost

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
<spark slave-01 ip> spark-slave01
<spark slave-02 ip> spark-slave02
<kafka01 ip> kafka01
<zookeeper ip> zookeeper01

アップデート

の出力の最初の部分は次のnetstat -n -aとおりです。

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address           State
tcp        0      0 0.0.0.0:22              0.0.0.0:*                 LISTEN
tcp        0      0 <spark master ip>:22    <my laptop ip>:60113      ESTABLISHED
tcp        0    260 <spark master ip>:22    <my laptop ip>:60617      ESTABLISHED
tcp6       0      0 :::22                   :::*                      LISTEN
tcp6       0      0 <spark master ip>:7077  :::*                      LISTEN
tcp6       0      0 :::8080                 :::*                      LISTEN
tcp6       0      0 <spark master ip>:6066  :::*                      LISTEN
tcp6       0      0 127.0.0.1:60105         127.0.0.1:44436           TIME_WAIT
tcp6       0      0 <spark master ip>:43874 <spark master ip>:7077    TIME_WAIT
tcp6       0      0 127.0.0.1:51220         127.0.0.1:55029           TIME_WAIT
tcp6       0      0 <spark master ip>:7077  <spark slave 01 ip>:37061 ESTABLISHED
tcp6       0      0 <spark master ip>:7077  <spark slave 02 ip>:47516 ESTABLISHED
tcp6       0      0 127.0.0.1:51220         127.0.0.1:55026           TIME_WAIT
4

2 に答える 2

1

IP アドレスの代わりにホスト名を使用しています。/etc/hostsそのため、各ノードのファイルにホスト名を記載する必要があります。それはうまくいくでしょう。

于 2015-05-27T07:02:26.323 に答える
0

最初ping spark-master01に、spark-master01 の解決先の ip を確認してみてください。次に、netstat -n -aSpark マスターのポート 7077 が Spark マスター ノードの IP に正しくバインドされているかどうかを確認できます。

于 2015-05-27T06:28:28.580 に答える