2016-04-13 6 views
0

私は与えられた入力ファイルのスペースをカンマで置き換える単純なスパークジョブを持っています。sparkアプリケーションをプログラム的に糸巻きモードで提出する方法は?

このジョブをローカルに送信すると(IDEを使用してビルドされたjarを実行すると)正常に完了し、マスターが「yarn-client」に設定されているとジョブは非常に長い間ハングし、次の例外がスローされます。

私たちは、jarファイルを作成してspark-submitを使って提出するのではなく、プログラムでジョブを送信したいと思っています。

スパークバージョン:1.6.1 Hadoopのバージョン:2.7.1

と私は私のポンポンのすべてのスパーク、糸とHadoopの依存関係を得ました。

仕事は、あなたのコンピュータが接続の多くを必要とするドライバプログラム自体を実行する必要があるため、リモートクライアントモードであなたのスパークジョブを送信することができないため、次の例外

java.net.ConnectException: Call From spark.node123.com/192.168.2.1 to 0.0.0.0:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 
    at sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:732) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1480) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1407) 
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) 
    at com.sun.proxy.$Proxy10.getClusterMetrics(Unknown Source) 
    at org.apache.hadoop.yarn.api.impl.pb.client.ApplicationClientProtocolPBClientImpl.getClusterMetrics(ApplicationClientProtocolPBClientImpl.java:152) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) 
    at com.sun.proxy.$Proxy11.getClusterMetrics(Unknown Source) 
    at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.getYarnClusterMetrics(YarnClientImpl.java:246) 
    at org.apache.spark.deploy.yarn.Client$$anonfun$submitApplication$1.apply(Client.scala:129) 
    at org.apache.spark.deploy.yarn.Client$$anonfun$submitApplication$1.apply(Client.scala:129) 
    at org.apache.spark.Logging$class.logInfo(Logging.scala:58) 
    at org.apache.spark.deploy.yarn.Client.logInfo(Client.scala:62) 
    at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:128) 
    at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:57) 
    at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:144) 
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:530) 
    at tardis.platform.TardisContext$.apply(TardisContext.scala:20) 
    at tardis.common.plugins.Heartbeat.isAbleTocreateContext(Heartbeat.scala:45) 
    at tardis.common.plugins.Heartbeat.performAction(Heartbeat.scala:33) 
    at tardis.core.scheduler.jobs.PluginExecutorJob.execute(PluginExecutorJob.scala:40) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) 
Caused by: java.net.ConnectException: Connection refused 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) 
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) 
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) 
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) 
    at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:609) 
    at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:707) 
    at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:370) 
    at org.apache.hadoop.ipc.Client.getConnection(Client.java:1529) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1446) 
    ... 25 more 

答えて

1

ヤーンクライアントモードでアプリケーションを正常に提出するには、ハープとヤーンの構成を追加する必要がありました。

0

に失敗しました。この方法を主張する場合は、ファイアウォールを設定して、一部のポートがクラスタに接続できるようにする必要があります。クラスタモードを使用するか、マスターノードから送信することは、苦痛を軽減します。

+0

私の使用例は、プログラムで(すなわちspark-submitコマンドを使用せずに)ジョブを送信することでした。bdw、ファイアウォールでは問題ありませんでした。 – sandyyyy

+0

@sandyyyy https://github.com/kakao/cuesheet – iboss

関連する問題