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

Как сохранить живой веб-сайт Spark?

По завершении выполнения Spark submit пользовательский интерфейс Spark Web уничтожается. Есть ли способ сохранить его в живых?

Я использую Spark 1.2.1.

4b9b3361

Ответ 1

Для просмотра пользовательских интерфейсов завершенных приложений вы можете использовать журнал событий Spark и функции сервера истории; Подробнее см. https://spark.apache.org/docs/latest/monitoring.html.

Ответ 2

Веб-интерфейс по-прежнему привязан к SparkContext, поэтому, если вы не вызываете .stop и не сохраняете свое приложение, пользовательский интерфейс должен оставаться в живых. Если вам нужно просмотреть журналы, они все равно должны сохраняться на сервере. Может возникнуть интересная функция, чтобы часть веб-сервера была открыта в течение определенного периода времени или какое-то другое представление, возможно, запрос функции?

Из SparkContext.scala

// 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())
      ...
    }
  }

ОБНОВЛЕНИЕ - ЛУЧШИЙ ОТВЕТ

Я забыл о сервере истории искры. Это то, что вы, возможно, захотите изучить

Ответ 3

Если вы тестируете локальный режим, то есть используете IDEA или Eclipse, один из способов сделать это следующим образом.

System.in.read();
spark.stop(); // spark --> SparkSession 

Это обеспечит доступность пользовательского интерфейса до тех пор, пока вы хотите. Просто нажмите enter на консоли IDEA/Eclipse, чтобы прервать приложение

Ответ 4

Чтобы добавить дружелюбное пошаговое решение по работе с сервером истории:

  • В папке с искровым распределением попробуйте запустить сервер истории:

    ./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

Ответ 5

может быть вы можете добавить строку:

new Scanner(System.in).nextLine()

убедитесь, что он запускается в драйвере

Ответ 6

При локальном тестировании приложений Spark, написанных на Python, я добавляю это как небольшое взломать до конца моих приложений:

raw_input("Press ctrl+c to exit")

При работе в диспетчере кластеров YARN я использую диспетчер истории, доступный на порту 18080.