Подтвердить что ты не робот

Получение исключения 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

4b9b3361

Ответ 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.