J'ai installé Zeppelin 0.7.1
. Lorsque j'essaie d'exécuter le programme spark Example (disponible avec le bloc-notes Zeppelin Tutorial
), le message d'erreur suivant s'affiche:
Java.lang.NullPointerException
at org.Apache.zeppelin.spark.Utils.invokeMethod(Utils.Java:38)
at org.Apache.zeppelin.spark.Utils.invokeMethod(Utils.Java:33)
at org.Apache.zeppelin.spark.SparkInterpreter.createSparkContext_2(SparkInterpreter.Java:391)
at org.Apache.zeppelin.spark.SparkInterpreter.createSparkContext(SparkInterpreter.Java:380)
at org.Apache.zeppelin.spark.SparkInterpreter.getSparkContext(SparkInterpreter.Java:146)
at org.Apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.Java:828)
at org.Apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.Java:70)
at org.Apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.Java:483)
at org.Apache.zeppelin.scheduler.Job.run(Job.Java:175)
at org.Apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.Java:139)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.Java:180)
at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.Java:293)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
J'ai également configuré le fichier de configuration (zeppelin-env.sh
) pour qu'il pointe vers mon répertoire d'installation Spark et de configuration Hadoop.
export SPARK_HOME="/${homedir}/sk"
export HADOOP_CONF_DIR="/${homedir}/hp/etc/hadoop"
La version de Spark que j'utilise est la version 2.1.0 et Hadoop est la version 2.7.3.
J'utilise également la configuration par défaut de l'interpréteur Spark (Spark doit donc être exécuté dans Local mode
).
Est-ce que j'ai râté quelque chose?
PS: Je suis capable de me connecter au terminal à l’aide de spark-Shell
Je viens tout juste de trouver une solution à ce problème pour Zeppelin-0.7.2:
La cause première est: Spark essayant de configurer le contexte Hive, mais les services hdfs n'est pas en cours d'exécution, c'est pourquoi HiveContext devient null et renvoie null exception de pointeur.
Solution:
1. Configurez Saprk Home [facultatif] et HDFS.
2. Exécuter le service HDFS
3. Redémarrez le serveur Zeppelin
OU
1. Allez dans les paramètres de l’interprète de Zeppelin.
2. Sélectionnez Spark Interpreter
3. zeppelin.spark.useHiveContext = false
Enfin, je suis capable de trouver la raison. Lorsque j'ai vérifié les journaux dans le répertoire ZL_HOME/logs, découvrez qu'il semble s'agir de l'erreur de liaison du pilote Spark. Ajout de la propriété suivante dans Spark Interpreter Binding et fonctionne bien maintenant ...
PS: On dirait que ce problème se pose principalement si vous vous connectez au VPN ... et que je me connecte au VPN
Avez-vous défini le bon SPARK_HOME
? Je me demandais simplement quelle sk
est dans votre
export SPARK_HOME="/${homedir}/sk"
(Je voulais juste commenter ci-dessous votre question mais je n'ai pas pu, à cause de mon manque de réputation ????)
J'obtenais exactement la même exception pour la version 0.7.2 de zepelline sous Windows 7. Je devais apporter plusieurs modifications à la configuration pour que cela fonctionne.
Commencez par renommer le fichier zeppelin-env.cmd.template en zeppelin-env.cmd. Ajoutez la variable env pour PYTHONPATH. Le fichier peut être situé dans le dossier% ZEPPELIN_HOME%/conf.
set PYTHONPATH=%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.4-src.Zip;%SPARK_HOME%\python\lib\pyspark.Zip
Ouvrez le fichier zeppelin.cmd à partir de l'emplacement% ZEPPELIN_HOME%/bin pour ajouter un% SPARK_HOME% et% ZEPPELIN_HOME%. Ce seront les premières lignes de l'instruction. La valeur de% SPARK_HOME% a été configurée comme étant vide car j'utilisais la bibliothèque d'étincelles intégrée. J'ai ajouté% ZEPPELIN_HOME% pour m'assurer que cet env est configuré à l'étape initiale du démarrage.
set SPARK_HOME=
set ZEPPELIN_HOME=<PATH to zeppelin installed folder>
Ensuite, nous devrons copier tous les fichiers jar et pySpark du dossier% spark_home%/dans le dossier zeppeline.
cp %SPARK_HOME%/jar/*.jar %ZEPPELIN_HOME%/interpreter/spark
cp %SPARK_HOME%/python/pyspark %ZEPPELIN_HOME%/interpreter/spark/pyspark
Je n'ai pas démarré le interpreter.cmd en accédant au cahier. Cela causait l'exception nullpointer. J'ai ouvert deux commandes Invite et dans une cmd, j'ai lancé zeppeline.cmd et dans l'autre interpreter.cmd.
Nous devons spécifier deux ports d'entrée supplémentaires et le chemin d'accès à zeppeline local_repo en ligne de commande. Vous pouvez obtenir le chemin d'accès à local_repo dans la page de l'interprète spark de zeppeline. Utilisez exactement le même chemin pour démarrer interpreter.cmd.
interpreter.cmd -d %ZEPPELIN_HOME%\interpreter\spark\ -p 5050 -l %ZEPPELIN_HOME%\local-repo\2D64VMYZE
L'hôte et le port doivent être spécifiés dans la page d'interprétation de l'étincelle dans zepelline ui. Sélectionnez le processus de connexion à externe
Host : localhost
PORT : 5050
Une fois que toutes ces configurations sont créées, vous pouvez enregistrer et redémarrer l’interpréteur d’étincelle à l’étape suivante. Créez un nouveau cahier et tapez sc.version. Il publiera la version spark. Zeppeline 0.7.2 ne prend pas en charge l'étincelle 2.2.1
enterCaused by: Java.net.ConnectException: Connection refused (Connection refused)
at Java.net.PlainSocketImpl.socketConnect(Native Method)
at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:350)
at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:206)
at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188)
at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)
at Java.net.Socket.connect(Socket.Java:589)
at org.Apache.thrift.transport.TSocket.open(TSocket.Java:182)
... 74 more
)
at org.Apache.hadoop.Hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.Java:466)
at org.Apache.hadoop.Hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.Java:236)
at org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.Java:74)
... 71 more
INFO [2017-11-20 17:51:55,288] ({pool-2-thread-4} SparkInterpreter.Java[createSparkSession]:369) - Created Spark session with Hive support
ERROR [2017-11-20 17:51:55,290] ({pool-2-thread-4} Job.Java[run]:181) - Job failed code here
Il semble que le service Hive Metastore n’ait pas démarré. Vous pouvez démarrer le service Metastore et réessayer.
Hive --service metastore
Sur AWS EMR, le problème était la mémoire. J'ai dû définir manuellement une valeur inférieure pour spark.executor.memory
dans l'Interpeter for Spark à l'aide de l'interface utilisateur de Zeppelin.
La valeur varie en fonction de la taille de votre instance. Le mieux est de vérifier les journaux situés dans le dossier /mnt/var/log/zeppelin/
.
Dans mon cas, l'erreur sous-jacente était la suivante:
Error initializing SparkContext.
Java.lang.IllegalArgumentException: Required executor memory (6144+614 MB) is above the max threshold (6144 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.
Cela m'a aidé à comprendre pourquoi il échouait et ce que je pouvais faire pour le réparer.
Remarque:
Ceci est dû au fait que je commençais une instance avec HBase qui limite la mémoire disponible. Voir les valeurs par défaut pour la taille d'instance ici .
Vérifiez si votre NameNode est passé en mode sans échec.
vérifier avec la syntaxe ci-dessous:
Sudo -u hdfs hdfs dfsadmin -safemode get
pour quitter le mode sans échec, utilisez la commande ci-dessous:
Sudo -u hdfs hdfs dfsadmin -safemode leave
a résolu ce problème en ajoutant cette ligne en haut du fichier common.sh dans dir zeppelin-0.6.1 puis bin
ouvrez common.sh et ajoutez une commande en haut du jeu de fichiers:
unset CLASSPATH