web-dev-qa-db-ja.com

spark submit "Service 'Driver' could not bind on port" error

次のコマンドを使用してspark Java wordcountの例:-

time spark-submit --deploy-mode cluster --master spark://192.168.0.7:6066 --class org.Apache.spark.examples.JavaWordCount /home/pi/Desktop/example/new/target/javaword.jar /books_50.txt 

私がそれを実行すると、以下は出力です:-

Running Spark using the REST application submission protocol.
16/07/18 03:55:41 INFO rest.RestSubmissionClient: Submitting a request to launch an application in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submission successfully created as driver-20160718035543-0000. Polling submission state...
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submitting a request for the status of submission driver-20160718035543-0000 in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: State of driver driver-20160718035543-0000 is now RUNNING.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Driver is running on worker worker-20160718041005-192.168.0.12-42405 at 192.168.0.12:42405.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Server responded with CreateSubmissionResponse:
{
  "action" : "CreateSubmissionResponse",
  "message" : "Driver successfully submitted as driver-20160718035543-0000",
  "serverSparkVersion" : "1.6.2",
  "submissionId" : "driver-20160718035543-0000",
  "success" : true
}

私は特定のワーカー(192.168.0.12)のログを確認しました。

Launch Command: "/usr/lib/jvm/jdk-8-Oracle-arm32-vfp-hflt/jre/bin/Java" "-cp" "/opt/spark/conf/:/opt/spark/lib/spark-Assembly-1.6.2-hadoop2.6.0.jar:/opt/spark/lib/datanucleus-api-jdo-3.2.6.jar:/opt/spark/lib/datanucleus-core-3.2.10.jar:/opt/spark/lib/datanucleus-rdbms-3.2.9.jar" "-Xms1024M" "-Xmx1024M" "-Dspark.driver.supervise=false" "-Dspark.app.name=org.Apache.spark.examples.JavaWordCount" "-Dspark.submit.deployMode=cluster" "-Dspark.jars=file:/home/pi/Desktop/example/new/target/javaword.jar" "-Dspark.master=spark://192.168.0.7:7077" "-Dspark.executor.memory=10M" "org.Apache.spark.deploy.worker.DriverWrapper" "spark://[email protected]:42405" "/opt/spark/work/driver-20160718035543-0000/javaword.jar" "org.Apache.spark.examples.JavaWordCount" "/books_50.txt"
========================================

log4j:WARN No appenders could be found for logger (org.Apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
16/07/18 04:10:58 INFO SecurityManager: Changing view acls to: pi
16/07/18 04:10:58 INFO SecurityManager: Changing modify acls to: pi
16/07/18 04:10:58 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(pi); users with modify permissions: Set(pi)
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
Exception in thread "main" Java.net.BindException: Cannot assign requested address: Service 'Driver' failed after 16 retries! Consider explicitly setting the appropriate port for the service 'Driver' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.
    at Sun.nio.ch.Net.bind0(Native Method)
    at Sun.nio.ch.Net.bind(Net.Java:433)
    at Sun.nio.ch.Net.bind(Net.Java:425)
    at Sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.Java:223)
    at Sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.Java:74)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.Java:125)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.Java:485)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.Java:1089)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.Java:430)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.Java:415)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.Java:903)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.Java:198)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.Java:348)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.Java:357)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.Java:357)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.Java:111)
    at Java.lang.Thread.run(Thread.Java:745)

私のspark-env.shファイル(マスター用)には以下が含まれています:-

export SPARK_MASTER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

私のspark-env.shファイル(ワーカー用)には次が含まれています:-

export SPARK_WORKER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

助けてください...!!

8
itsamineral

シェルを実行しようとしたときに同じ問題が発生し、SPARK_LOCAL_IP環境変数を設定することでこれを機能させることができました。シェルの実行時にコマンドラインからこれを割り当てることができます:

SPARK_LOCAL_IP=127.0.0.1 ./bin/spark-Shell

より永続的な解決策として、Sparkルートのconfディレクトリにspark-env.shファイルを作成します。次の行を追加します。

SPARK_LOCAL_IP=127.0.0.1

chmod +x ./conf/spark-env.shを使用してスクリプトに実行権限を付与すると、この環境変数がデフォルトで設定されます。

16
Simon Guest

Maven/SBTを使用して依存関係を管理しています。Sparkコアはjarファイルに含まれています。

"spark.driver.bindAddress"(ここではScala)を設定することで、実行時にSPARK_LOCAL_IPをオーバーライドできます。

val config = new SparkConf()
config.setMaster("local[*]")
config.setAppName("Test App")
config.set("spark.driver.bindAddress", "127.0.0.1")
val sc = new SparkContext(config)
9
David Steinmetz

私もこの問題を抱えていました。

(私にとって)理由は、私のローカルシステムのIPにローカルシステムから到達できなかったためです。その発言が意味をなさないことは知っていますが、以下をお読みください。

システム名(uname -s)は、システムの名前が「sparkmaster」であることを示しています。/etc/hostsファイルで、sparkmasterシステムの固定IPアドレスを「192.168.1.70」として割り当てました。 sparknode01とsparknode02には、それぞれ... 1.71と... 1.72に追加の固定IPアドレスがありました。

他にも問題があったため、すべてのネットワークアダプターをDHCPに変更する必要がありました。つまり、192.168.90.123のようなアドレスが取得されていました。 DHCPアドレスが... 1.70の範囲と同じネットワーク内になく、ルートが構成されていませんでした。

sparkが始まると、unameで指定されたホスト(つまり、私の場合はsparkmaster)に接続しようとしているようです。これはIP 192.168.1.70でしたが、接続する方法がありませんでしたこれは、そのアドレスが到達不能なネットワークにあったためです。

私の解決策は、イーサネットアダプターの1つを固定の静的アドレス(つまり、192.168.1.70)に戻すことでした-問題は解決しました。

したがって、問題は、sparkが「ローカルモード」で開始すると、ローカルホストではなく、システムの名前にちなんで名付けられたシステムに接続しようとすることです。)これは、クラスターをセットアップしたいのですが(上記のように)、上記の混乱を招くメッセージが表示される可能性があります。システムのホスト名を/ etc/hostsの127.0.0.1エントリに置くと、この問題が解決する可能性がありますが、私は試しませんでした。

2
GMc

/etc/hostsファイルにホスト名を入力する必要があります。何かのようなもの:

127.0.0.1   localhost "hostname"
1
Manav Garg

この問題は、IPアドレスのみに関連しています。ログファイルのエラーメッセージは情報を提供するものではありません。次の3つのステップで確認します。

  1. iPアドレスを確認してください-ifconfigまたはipコマンドで確認できます。サービスが公共サービスではない場合。 192.168のIPアドレスで十分です。クラスターを計画している場合、127.0.0.1は使用できません。

  2. 環境変数SPARK_MASTER_Hostを確認します-変数名または実際のIPアドレスにタイプミスがないことを確認します。

    env | grep SPARK_

  3. コマンドnetstatを使用して、sparkMasterに使用する予定のポートが空いていることを確認します。 1024未満のポートは使用しないでください。次に例を示します。

    netstat -a | 9123

別のマシンからwebuiが表示されない場合、sparkmasterが実行を開始した後、コマンドiptablesでwebuiポートを開きます。

0
vernekap

私はこの問題を抱えていましたが、それは実際のIPを/ etc/hostsのIPで変更したためです。

0
ParisaN

データフレームで以下のように使用します

val spark = SparkSession.builder.appName( "BinarizerExample")。master( "local [*]")。config( "spark.driver.bindAddress"、 "127.0.0.1")。getOrCreate()

0
Sushruth

これはおそらく重複しています Spark 1.2.1スタンドアロンクラスターモードspark-submitが機能していません

同じ手順を試しましたが、ジョブを実行できました。可能であれば、完全なspark-env.shとspark-defaultsを投稿してください。

0
Ravi R