2016-10-27 12 views
0

私はspark 1.6.1をdockerコンテナにインストールしました。私はspark pythonアプリケーションをローカルで実行することができますが、私のホスト外の糸クラスターにそれを送信しようとすると(spark-submit --master yarn myapp.py)、ACCEPTED状態にとどまります。私は自分のアプリケーションからの標準エラーログに行けば私は次があります。DARKERコンテナ内のYARNクラスタへのspark-submitの送信

16/10/26 11:07:25 INFO ApplicationMaster: Waiting for Spark driver to be  reachable. 
16/10/26 11:08:28 ERROR ApplicationMaster: Failed to connect to driver at 172.18.0.4:50229, retrying ... 
16/10/26 11:09:31 ERROR ApplicationMaster: Failed to connect to driver at 172.18.0.4:50229, retrying ... 
16/10/26 11:09:32 ERROR ApplicationMaster: Uncaught exception: 
org.apache.spark.SparkException: Failed to connect to driver! 
at org.apache.spark.deploy.yarn.ApplicationMaster.waitForSparkDriver(ApplicationMaster.scala:501) 
at org.apache.spark.deploy.yarn.ApplicationMaster.runExecutorLauncher(ApplicationMaster.scala:362) 
at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:204) 
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$main$1.apply$mcV$sp(ApplicationMaster.scala:672) 
at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:69) 
at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:68) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709) 
at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:68) 
at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:670) 
at org.apache.spark.deploy.yarn.ExecutorLauncher$.main(ApplicationMaster.scala:697) 
at org.apache.spark.deploy.yarn.ExecutorLauncher.main(ApplicationMaster.scala) 

ドライバ172.18.0.4:50229で、それは私のコンテナです。私のコンテナはIP 10.xx.xx.xxのホストマシン上にあるため、正常に届かないことがあります。 sparkがホストマシンに接続しようとしなければならないことをどのように指定できますか?それとも、誰にもこの解決策がありますか?

Ps:私は実際に私の問題に似ているMaking spark use /etc/hosts file for binding in YARN cluster modeのリンクを確認しました。しかし、スパークからの問題はそれを修正しないと言うので、

答えて

0

私の質問に答えるために、私はホストネットワーク上で自分のコンテナを実行しなければならなかった。プロキシの背後にある場合は、SPARK_LOCAL_IP(env変数)とspark.driver.host(confオプション)に適切な仮想インタフェース(eth1)を使用するよう注意してください。

コンテナのIPがネットワークに従って設定されているため、ミーンクラスタはドライバに接続する際に問題が発生していました。

コンテナがホストネットワーク内にあるため、コンテナによって配備されたサービスは自動的に公開されるため、公開またはバインドする必要はありません。

Ps:クライアントモードでアプリケーションをデプロイしていました。

関連する問題