Получение исключения NullPointerException при запуске Spark Code в Zeppelin 0.7.1
Я установил Zeppelin 0.7.1
. Когда я попытался выполнить Исходную программу примера (которая была доступна с записью Zeppelin Tutorial
), я получаю следующую ошибку
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)
Я также установил конфигурационный файл (zeppelin-env.sh
), чтобы указать на мою установку Spark и каталог конфигурации Hadoop
export SPARK_HOME="/${homedir}/sk"
export HADOOP_CONF_DIR="/${homedir}/hp/etc/hadoop"
Исправленная версия, которую я использую, - 2.1.0, а Hadoop - 2.7.3
Также я использую настройку интерпретатора искры по умолчанию (поэтому Spark настроен на запуск в Local mode
)
Я что-то пропустил?
PS: я могу подключиться к искру из терминала с помощью spark-shell
Ответы
Ответ 1
Как раз сейчас я получил решение этой проблемы для Zeppelin-0.7.2:
Корневая причина: Spark пытается настроить контекст Hive, но hdfs-сервисы не работает, поэтому HiveContext становится нулевым и бросает нуль исключение указателя.
Решение:
1. Установите Saprk Home [дополнительно] и HDFS.
2. Запустите службу HDFS
3. Перезагрузите сервер zeppelin
ИЛИ
1. Перейдите к настройкам переводчика Zeppelin.
2. Выберите Spark Interpreter
3. zeppelin.spark.useHiveContext = false
Ответ 2
Наконец, я могу узнать причину. Когда я проверил журналы в каталоге ZL_HOME/logs, выясните, что это ошибка привязки драйвера Spark. Добавлено следующее свойство в Spark Interpreter Binding и теперь работает хорошо...
![введите описание изображения здесь]()
PS: Похоже, эта проблема возникает, главным образом, при подключении к VPN... и я подключаюсь к VPN
Ответ 3
Вы установили правильный SPARK_HOME
? Просто интересно, что sk
в вашем
export SPARK_HOME="/${homedir}/sk"
(Я просто хотел прокомментировать ниже вашего вопроса, но не мог, из-за моей нехватки репутации ")
Ответ 4
решил это, добавив эту строку вверху в файл common.sh
в dir zeppelin-0.6.1, затем bin
открыть common.sh
и добавьте команду в верхнюю часть набора файлов:
unset CLASSPATH
Ответ 5
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
Похоже, сервис Hive Metastore не запускался. Вы можете запустить службу Metastore и повторить попытку.
hive --service metastore
Ответ 6
Я получал точно такое же исключение для версии zepelline 0.7.2 в окне 7. Мне пришлось сделать несколько изменений в конфигурации, чтобы заставить ее работать.
Сначала переименуйте zeppelin-env.cmd.template в zeppelin-env.cmd. Добавьте переменную env для PYTHONPATH. Файл может быть расположен в папке% ZEPPELIN_HOME%/conf.
set PYTHONPATH=%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.4-src.zip;%SPARK_HOME%\python\lib\pyspark.zip
Откройте zeppelin.cmd из местоположения% ZEPPELIN_HOME%/bin, чтобы добавить% SPARK_HOME% и% ZEPPELIN_HOME%. Это будут первые строки в инструкции. Значение для% SPARK_HOME% было настроено как пустое, поскольку я использовал встроенную библиотеку искры. Я добавил% ZEPPELIN_HOME%, чтобы убедиться, что этот env настроен на начальном этапе запуска.
set SPARK_HOME=
set ZEPPELIN_HOME=<PATH to zeppelin installed folder>
Далее нам нужно будет скопировать все jar и pySpark из папки% spark_home%/to zeppeline.
cp %SPARK_HOME%/jar/*.jar %ZEPPELIN_HOME%/interpreter/spark
cp %SPARK_HOME%/python/pyspark %ZEPPELIN_HOME%/interpreter/spark/pyspark
Я не запускал interpreter.cmd во время доступа к ноутбуку. Это вызвало исключение nullpointer. Я открыл две командной строки, и в одном CMD я начал zeppeline.cmd и в другом interpreter.cmd.
Мы должны указать два дополнительных порта ввода и путь к zeppeline local_repo в командной строке. Вы можете получить путь к local_repo на странице искробезопасности zeppeline. Используйте тот же путь, чтобы запустить интерпретатор .cmd.
interpreter.cmd -d %ZEPPELIN_HOME%\interpreter\spark\ -p 5050 -l %ZEPPELIN_HOME%\local-repo\2D64VMYZE
Хост и порт должны быть указаны на странице искрового интерпретатора в zepelline ui. Выберите "Подключиться к внешнему процессу"
HOST : localhost
PORT : 5050
После создания всех этих конфигураций на следующем шаге мы можем сохранить и перезапустить искровой интерпретатор. Создайте новый ноутбук и напечатайте sc.version.
Он опубликует искровую версию. Zeppeline 0.7.2 не поддерживает искру 2.2.1
Ответ 7
Проверьте, перешел ли ваш NameNode в безопасный режим.
проверьте с синтаксисом ниже:
sudo -u hdfs hdfs dfsadmin -safemode get
чтобы выйти из безопасного режима используйте следующую команду:
sudo -u hdfs hdfs dfsadmin -safemode leave
Ответ 8
На AWS EMR проблема была с памятью. Мне пришлось вручную установить меньшее значение для spark.executor.memory
в Interpeter for Spark, используя пользовательский интерфейс Zeppelin.
Значение варьируется в зависимости от размера вашего экземпляра. Лучше всего проверить журналы, расположенные в папке /mnt/var/log/zeppelin/
.
В моем случае основной ошибкой было:
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'.
Это помогло мне понять, почему это не помогло, и что я могу сделать, чтобы это исправить.
Замечания:
Это произошло потому, что я запускал экземпляр с HBase, который ограничивает доступную память. Посмотрите значения по умолчанию для размера экземпляра здесь.
Ответ 9
Кажется, ошибка в Zeppelin 0.7.1. Прекрасно работает в 0.7.2.