Comment donner dépendant de pots d'étincelle soumettre en mode cluster
Je suis en cours d'exécution étincelle en utilisant le mode de cluster pour le déploiement . Ci-dessous est la commande
JARS=$JARS_HOME/amqp-client-3.5.3.jar,$JARS_HOME/nscala-time_2.10-2.0.0.jar,\
$JARS_HOME/rabbitmq-0.1.0-RELEASE.jar,\
$JARS_HOME/kafka_2.10-0.8.2.1.jar,$JARS_HOME/kafka-clients-0.8.2.1.jar,\
$JARS_HOME/spark-streaming-kafka_2.10-1.4.1.jar,\
$JARS_HOME/zkclient-0.3.jar,$JARS_HOME/protobuf-java-2.4.0a.jar
dse spark-submit -v --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \
--executor-memory 512M \
--total-executor-cores 3 \
--deploy-mode "cluster" \
--master spark://$MASTER:7077 \
--jars=$JARS \
--supervise \
--class "com.testclass" $APP_JAR input.json \
--files "/home/test/input.json"
La commande ci-dessus fonctionne très bien en mode client. Mais lorsque je l'utilise en mode cluster-je obtenir classe pas trouvé exception
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:58)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
Caused by: java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils$
En mode client dépendante des pots se sont copiés dans le répertoire /var/lib/spark/répertoire de travail alors que dans le mode cluster, il ne l'est pas. S'il vous plaît aidez-moi à obtenir ce résolus.
EDIT:
Je suis à l'aide de nfs et j'ai monté le même répertoire sur toute l'étincelle nœuds sous le même nom. Pourtant, je reçois le message d'erreur. Comment il est en mesure de choisir l'application jar qui est également sous le même répertoire, mais pas dépendante de pots ?
OriginalL'auteur Knight71 | 2015-12-14
Vous devez vous connecter pour publier un commentaire.
En mode Cluster, pilote pragram est en cours d'exécution dans le cluster non pas en local(par rapport au mode client) et dépendant des bocaux doivent être accessibles dans le groupe, sinon programme de pilote et exécuteur testamentaire jeter "de java.lang.NoClassDefFoundError" l'exception".
En fait Lors de l'utilisation de bougies de soumettre, l'application jar avec tous les pots inclus avec l'option --pots option sera automatiquement transféré vers le cluster.
Vos pots supplémentaires pourraient être ajoutés à --pots, ils seront copiés sur cluster automatiquement.
veuillez vous référer à "Avancé de Gestion de la Dépendance" de l'article en lien ci-dessous:
http://spark.apache.org/docs/latest/submitting-applications.html
Je suppose qu'ils n'ont pas été inclus dans le classpath. vous pouvez activer l'histoire de serveur et vérifiez l'environnement de l'application et de son classpath. Il est très utile de cocher la case "NoClassDefFoundError" l'exception".
Oui, vous avez raison.J'ai utilisé le dse -v et a constaté que classpath éléments à vide dans le groupe déployer mode. Mais en mode client il est peuplé. Je ne suis pas sûr de ce que je suis absent ici.
Bonne nouvelle :), je pense que vous feriez mieux d'utiliser --pots de paramètre, il est recommandé de distribuer des pots supplémentaires pour le mode cluster. Outre cela, j'ai parfois l'utilisation de "l'étincelle.le pilote.extraClassPath" ajouter explicitement pots pilote classpath.(parce que j'ai trouvé parfois-pots-être pas encore ajouté au classpath). s'il vous plaît avoir un essai.
Merci pour l'aide.Après avoir lutté pendant deux jours, - driver-class-path ayant à charge des pots . Aussi trouvé que les pots doivent être côlon séparés au lieu d'séparées par des virgules.
OriginalL'auteur Shawn Guo
Comme l'étincelle de la documentation dit,
1. Garder les bocaux et les dépendances à l' même chemin d'accès local dans tous les nœuds en cluster ou
2. Garder le pot est distribué des fichiers système où tous les nœuds ont accès.
OriginalL'auteur WoodChopper