Ответ 1
Для просмотра пользовательских интерфейсов завершенных приложений вы можете использовать журнал событий Spark и функции сервера истории; Подробнее см. https://spark.apache.org/docs/latest/monitoring.html.
По завершении выполнения Spark submit пользовательский интерфейс Spark Web уничтожается. Есть ли способ сохранить его в живых?
Я использую Spark 1.2.1.
Для просмотра пользовательских интерфейсов завершенных приложений вы можете использовать журнал событий Spark и функции сервера истории; Подробнее см. https://spark.apache.org/docs/latest/monitoring.html.
Веб-интерфейс по-прежнему привязан к SparkContext
, поэтому, если вы не вызываете .stop
и не сохраняете свое приложение, пользовательский интерфейс должен оставаться в живых. Если вам нужно просмотреть журналы, они все равно должны сохраняться на сервере. Может возникнуть интересная функция, чтобы часть веб-сервера была открыта в течение определенного периода времени или какое-то другое представление, возможно, запрос функции?
// Initialize the Spark UI
private[spark] val ui: Option[SparkUI] =
if (conf.getBoolean("spark.ui.enabled", true)) {
Some(SparkUI.createLiveUI(this, conf, listenerBus, jobProgressListener,
env.securityManager,appName))
} else {
// For tests, do not enable the UI
None
}
/** Shut down the SparkContext. */
def stop() {
SparkContext.SPARK_CONTEXT_CONSTRUCTOR_LOCK.synchronized {
postApplicationEnd()
ui.foreach(_.stop())
...
}
}
ОБНОВЛЕНИЕ - ЛУЧШИЙ ОТВЕТ
Я забыл о сервере истории искры. Это то, что вы, возможно, захотите изучить
Если вы тестируете локальный режим, то есть используете IDEA или Eclipse, один из способов сделать это следующим образом.
System.in.read();
spark.stop(); // spark --> SparkSession
Это обеспечит доступность пользовательского интерфейса до тех пор, пока вы хотите. Просто нажмите enter на консоли IDEA/Eclipse, чтобы прервать приложение
Чтобы добавить дружелюбное пошаговое решение по работе с сервером истории:
В папке с искровым распределением попробуйте запустить сервер истории:
./sbin/start-history-server.sh
По умолчанию сервер истории будет пытаться отслеживать /tmp/spark-events
для журналов и, к сожалению, он выйдет из строя, если путь не существует. Поэтому, если вы получите сообщение об ошибке, вам может потребоваться mkdir /tmp/spark-events
. Вы можете проверить журналы журналов истории в ./logs
, чтобы увидеть подробности в случае возникновения проблем.
Чтобы контекст сохранял свой журнал событий, вам необходимо включить ведение журнала событий. Это можно сделать либо программно, либо путем редактирования ./conf/spark-defaults.conf
(скопируйте шаблон, если он еще не существует), и раскомментируйте/добавьте строку:
spark.eventLog.enabled true
Запуск spark-submit
должен приводить к папкам журнала событий, например /tmp/spark-events/local-1465133722470
.
Доступ к пользовательскому интерфейсу сервера истории, обычно http://localhost:18080
может быть вы можете добавить строку:
new Scanner(System.in).nextLine()
убедитесь, что он запускается в драйвере
При локальном тестировании приложений Spark, написанных на Python, я добавляю это как небольшое взломать до конца моих приложений:
raw_input("Press ctrl+c to exit")
При работе в диспетчере кластеров YARN я использую диспетчер истории, доступный на порту 18080.