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


Устранение неполадок в Apache Spark с помощью Azure HDInsight

Ознакомьтесь с основными проблемами, которые возникают при работе с полезными данными Apache Spark в Apache Ambari, и способами их решения.

Как настроить приложение Apache Spark с помощью Apache Ambari в кластерах?

Можно настроить значения конфигурации Spark, чтобы избежать исключения OutofMemoryError в приложении Apache Spark. На этапах ниже показаны значения конфигурации Spark по умолчанию в Azure HDInsight.

  1. Войдите в Ambari по адресу https://CLUSTERNAME.azurehdidnsight.net с помощью учетных данных кластера. На начальном экране показана панель мониторинга с общими сведениями. Существуют незначительные косметические различия между HDInsight 4.0.

  2. Перейдите в раздел Spark2>Configs.

    Выберите вкладку Конфигурации .

  3. В списке конфигураций выберите и разверните Custom-spark2-defaults.

  4. Найдите параметр значения, который необходимо настроить, например spark.executor.memory. В этом случае значение 9728m слишком высокое.

    Выберите custom-spark-defaults.

  5. Задайте для этого параметра рекомендуемое значение. Рекомендуется использовать значение 2048m.

  6. Сохраните это значение, а затем сохраните конфигурацию. Выберите Сохранить.

    Измените значение на 2048m.

    Запишите примечание об изменениях конфигурации, а затем нажмите кнопку Сохранить.

    Введите примечание о внесенных изменениях.

    Вы получите уведомление, если какие-либо конфигурации требуют внимания. Проверьте элементы, а затем нажмите кнопку Proceed Anyway (Продолжить).

    Выберите

  7. При сохранении конфигурации вам будет предложено перезапустить службу. Выберите Перезапустить.

    Выберите перезапуск.

    Подтвердите перезапуск.

    Щелкните Confirm Restart All (Подтвердить перезапуск всех).

    Вы можете просмотреть запущенные процессы.

    Просмотрите выполняемые процессы.

  8. Вы можете добавить конфигурации. В списке конфигураций выберите Custom-spark2-defaults, а затем щелкните Добавить свойство.

    Выберите добавить свойство.

  9. Определите новое свойство. Вы можете определить отдельное свойство с помощью диалогового окна для определенных параметров, например тип данных. Или вы можете определить несколько свойств с одним определением на строку.

    В этом примере свойство spark.driver.memory определяется со значением 4 ГБ.

    Определите новое свойство.

  10. Сохраните конфигурацию и перезапустите службу, как описано на шагах 6 и 7.

Эти изменения применяются на уровне кластера, но их можно переопределить при отправке задания Spark.

Как настроить приложение Apache Spark с помощью Jupyter Notebook в кластерах?

Укажите конфигурации Spark в допустимом формате JSON в первой ячейке Jupyter Notebook после директивы %%configure. При необходимости измените фактические значения:

Добавьте конфигурацию.

Как настроить приложение Apache Spark с помощью Apache Livy в кластерах?

Отправьте приложение Spark в Livy с помощью клиента REST, например cURL. Используйте команду, аналогичную приведенной ниже. При необходимости измените фактические значения:

curl -k --user 'username:password' -v -H 'Content-Type: application/json' -X POST -d '{ "file":"wasb://container@storageaccountname.blob.core.windows.net/example/jars/sparkapplication.jar", "className":"com.microsoft.spark.application", "numExecutors":4, "executorMemory":"4g", "executorCores":2, "driverMemory":"8g", "driverCores":4}'  

Как настроить приложение Apache Spark с помощью spark-submit в кластерах?

Запустите оболочку Spark с помощью команды, аналогичной приведенной ниже. При необходимости измените фактические значения конфигураций:

spark-submit --master yarn-cluster --class com.microsoft.spark.application --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4 /home/user/spark/sparkapplication.jar

Дополнительное чтение

Отправка заданий Apache Spark в кластерах HDInsight

Следующие шаги

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