2016-04-12 3 views
1

J'ai besoin de votre aide et des conseils pour l'exécution Spark KafkaWordCount exemple Apache sur un cluster d'allumage autonome:Spark en streaming - KafkaWordCount ne peut pas exécuter sur un cluster autonome Spark

je peux courir Spark exemple, KafkaWordCount, en mode local par

spark-submit .... --master local[4] .... 

et je peux obtenir le message de Kafka Server, qui est dans un autre noeud (machine virtuelle) et obtenir les résultats imprimés sur la console du terminal.

Cependant, lors de la présentation de l'application pour déclencher groupe autonome (via

spark-submit .... --master spark://master:7077 .... 

), je trouve des exceptions dans chaque répertoires de nœud des travailleurs de $ SPARK_HOME/travail /../../ stderr annuaire. Et le résultat de chaque lot de comptage de mots est NOT imprimé dans $ SPARK_HOME/work /../ .. stdout dans chaque noeud de travail.

Voici mes paramètres chaque travailleur étincelle de nœud de ressources en $ SPARK_HOME/conf/spark-env.sh:

export SPARK_MASTER_IP=master 
export SPARK_WORKER_CORES=4 
export SPARK_WORKER_MEMORY=3g 
export SPARK_WORKER_INSTANCES=2 

J'ai 5 nœuds de machine virtuelle (dans les noms d'hôte): mykafka, maître, data1 , data2 et data3.

Nous vous remercions de votre aide et de vos conseils à l'avance.

Les suivants sont les exceptions de RpcTimeoutException trouvés dans chaque travailleur:

16/04/11 23:07:30 WARN NettyRpcEndpointRef: Error sending message [message = Heartbeat(5,[Lscala.Tuple2;@2628a359,BlockManagerId(5, data3, 34838))] in 1 attempts 
org.apache.spark.rpc.RpcTimeoutException: Cannot receive any reply in 10 seconds. This timeout is controlled by spark.executor.heartbeatInterval 
    at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:63) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) 
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) 
    at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:185) 
    at scala.util.Try$.apply(Try.scala:161) 
    at scala.util.Failure.recover(Try.scala:185) 
    at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) 
    .... 
    .... 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.util.concurrent.TimeoutException: Cannot receive any reply in 10 seconds 
    at org.apache.spark.rpc.netty.NettyRpcEnv$$anon$1.run(NettyRpcEnv.scala:242) 
    ... 7 more 
16/04/11 23:07:31 ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL 15: SIGTERM 
beat(5,[Lscala.Tuple2;@2628a359,BlockManagerId(5, data3, 34838))] in 1 attempts 
org.apache.spark.rpc.RpcTimeoutException: Cannot receive any reply in 10 seconds. This timeout is controlled by spark.executor.heartbeatInterval 
    at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:63) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) 
    .... 
    .... 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.util.concurrent.TimeoutException: Cannot receive any reply in 10 seconds 
    at org.apache.spark.rpc.netty.NettyRpcEnv$$anon$1.run(NettyRpcEnv.scala:242) 
    ... 7 more 
+0

vous avez dit que vous avez 5 machines virtuelles sont-ils capables de se connecter à chaque autre? Y a-t-il un pare-feu qui les empêche d'accéder à certains ports? Êtes-vous des serveurs liés à une interface publique? – Vishnu667

+0

Oui, ils peuvent se connecter les uns aux autres via les paramètres de mot de passe SSH moins. Et je suis capable de soumettre d'autres travaux d'allumage en mode client avec succès. Aussi à partir du nœud maître, je suis capable de me connecter au nœud "mykafka". – Alan

+0

Je l'ai soumis en mode client de fil, et trouvé un des exécuteurs ne peut pas être lancé: {{JAVA_HOME}}/bin/java -server -XX: OnOutOfMemoryError = 'tuez% p' -Xms4096m -Xmx4096m -Djava.io .tmpdir = {{PWD}}/tmp '-Dspark.driver.port = 44618' -Dspark.yarn.app.container.log.dir = -XX: MaxPermSize = 256m org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark: // CoarseGrainedScheduler – Alan

Répondre

3

donc j'ai eu exactement le même problème avec cet exemple et il semble être lié à ce bogue https://issues.apache.org/jira/browse/SPARK-13906

Vous ne savez pas comment définir ceci pour l'exemple mais j'ai expérimenté avec le code, en créant une petite application scala et en ajoutant un paramètre de configuration supplémentaire au SparkCo nf()

val conf = new SparkConf() 
.setAppName('name') 
.set("spark.rpc.netty.dispatcher.numThreads","2") 

crédit à David Gomez et le logiciel de messagerie d'allumage où, après beaucoup de googleing j'ai trouvé la solution

https://mail-archives.apache.org/mod_mbox/spark-user/201603.mbox/%[email protected].com%3E

+0

Pas de problème Je suis tombé sur ce poste hier ayant le même problème juste trouvé la bonne phrase google pour trouver cet expéditeur – Robrotheram

+0

Robrotheram, merci encore. Votre aide est très importante pour moi. Cela profite également à mes autres projets et plans en cours. J'essayais de régler tous les différents paramètres ou configurations de soumission d'étincelles, mais aucun d'entre eux ne fonctionne sur le cluster de développement, et je ne suis pas en mesure de voir si cela fonctionnera bien dans l'onglet Streaming de Spark UI. Cette information est utile et vraiment un grand pas pour moi. Alan – Alan