Поделиться через


Известные проблемы в работе кластера Apache Spark в HDInsight

В этом документе отслеживаются все известные проблемы с общедоступной предварительной версией Spark HDInsight.

Утечка интерактивного сеанса Apache Livy

При перезапуске Apache Livy (из Apache Ambari или в связи с перезапуском виртуальной машины headnode 0) во время работы интерактивного сеанса происходит утечка сеанса интерактивного задания. В результате этого новые задания могут "зависнуть" в состоянии "Принято".

Устранение.

Для решения этой проблемы выполните указанные ниже действия:

  1. Подключитесь к головному узлу по протоколу SSH. См. дополнительные сведения об использовании SSH в HDInsight.

  2. Выполните следующую команду, чтобы найти идентификаторы приложений для интерактивных заданий, запущенных из Livy:

    yarn application –list
    

    Если задания запущены с помощью интерактивного сеанса Livy без явно заданных имен, по умолчанию используются имена Livy. Для сеанса Livy, запущенного с помощью Jupyter Notebook, имя задания начинается с remotesparkmagics_*.

  3. Чтобы аннулировать эти задания, выполните следующую команду:

    yarn application –kill <Application ID>
    

После этого начинают выполняться новые задания.

Сервер журналов Spark не запускается

Сервер журналов Spark не запускается автоматически после создания кластера.

Устранение.

Вручную запустите сервер журналов из Ambari.

Проблема разрешений в каталоге журналов Spark

Отправляя задание с помощью команды spark-submit, hdiuser возвращает следующую ошибку:

java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)

При этом журнал драйверов не ведется.

Устранение.

  1. Добавьте hdiuser в группу Hadoop.
  2. После создания кластера предоставьте разрешения 777 для каталога /var/log/spark.
  3. В Ambari измените путь размещения журнала Spark на каталог с разрешениями 777.
  4. Выполните команду spark-submit как sudo.

Соединитель Spark-Phoenix не поддерживается

Кластеры HDInsight Spark не поддерживают соединитель Spark-Phoenix.

Устранение.

Вместо него необходимо использовать соединитель Spark-HBase. Инструкции см. в записи блога об использовании соединителя Spark-HBase.

Ниже приведены некоторые известные проблемы, связанные с записными книжками Jupyter Notebook.

Записные книжки со знаками не из набора ASCII в именах файлов

Не используйте в именах файлов записных книжек Jupyter символы не из набора ASCII. При попытке отправить через пользовательский интерфейс Jupyter файл, имя которого содержит символы не из набора ASCII, происходит сбой без сообщения об ошибке. Jupyter не позволяет отправить файл, но и не выдает явную ошибку.

Ошибка при загрузке записных книжек большого размера

При загрузке записных книжек большого размера может возникнуть ошибка Error loading notebook .

Устранение.

Появление этой ошибки не означает, что данные повреждены или утрачены. Записные книжки по-прежнему хранятся на диске в каталоге /var/lib/jupyter, и вы можете получить к ним доступ, подключившись к кластеру по протоколу SSH. См. дополнительные сведения об использовании SSH в HDInsight.

После подключения к кластеру с помощью SSH во избежание потери важных данных записные книжки можно скопировать из кластера на локальный компьютер (с помощью SCP или WinSCP), тем самым создав резервную копию. Затем вы сможете использовать туннель SSH к головному узлу через порт 8001, чтобы получить доступ к Jupyter без прохождения через шлюз. В Jupyter можно очистить выходные данные записной книжки и повторно сохранить ее, чтобы уменьшить ее размер.

Чтобы избежать этой ошибки в будущем, необходимо следовать некоторым рекомендациям.

  • Записная книжка должна быть небольшого размера. В записной книжке сохраняются любые выходные данные заданий Spark, которые отправляются обратно в Jupyter. Не рекомендуем выполнять команду .collect() для устойчивых распределенных наборов данных или кадров данных большого размера в Jupyter. Вместо этого, чтобы просмотреть содержимое устойчивого распределенного набора данных, выполните команду .take() или .sample(). В этом случае объем выходных данных не будет слишком большим.
  • Кроме того, если при сохранении записной книжки очистить все ячейки выходных данных, это также поможет уменьшить размер.

Начальная загрузка записной книжки загружается дольше ожидаемого

Выполнение первой инструкции кода в записной книжке Jupyter Notebook с использованием магической команды Spark может занимать больше минуты.

Пояснение

Это происходит из-за выполнения первой ячейки кода. В фоновом режиме инициируется конфигурация сеанса и задается контекст Spark, SQL и Hive. После настройки этих контекстов выполняется первая инструкция, и из-за этого кажется, что она выполняется долго.

Приостановка записной книжки Jupyter Notebook при создании сеанса

Если кластеру Spark не хватает ресурсов, при попытке создать сеанс работа ядер Spark и Pyspark в записной книжке Jupyter Notebook приостанавливается.

Устранение

  1. Освободите часть ресурсов в кластере Spark.

    • Остановите другие записные книжки Spark в меню "Закрыть и остановить" или нажмите кнопку "Завершить" в обозревателе записных книжек.
    • Остановите другие приложения Spark из YARN.
  2. Перезапустите записную книжку, которую вы пытались запустить. Теперь ресурсов должно быть достаточно для создания сеанса.

См. также раздел

Сценарии

Создание и запуск приложений

Инструменты и расширения

Управление ресурсами