Журнал приложений во время выполнения при искровом выполнении - PullRequest
0 голосов
/ 25 июня 2018

У меня есть приложение, написанное для Spark на языке Scala. Мой код приложения готов, и работа длится около 10-15 минут.

Существует дополнительное требование для предоставления статуса выполнения приложения, когда задание запускается во время выполнения. Я знаю, что spark работает ленивым образом, и не очень удобно возвращать данные обратно в программу драйвера во время выполнения spark. Как правило, я был бы заинтересован в предоставлении статуса на регулярной основе.

Например. если в приложении Spark сконфигурировано 20 функциональных точек, то я хотел бы указать состояние каждой из этих функциональных точек по мере того, как и когда они выполняются / или этапы завершаются во время выполнения искры.

Эти входящие состояния функциональных точек будут затем перенесены в некоторый пользовательский интерфейс для отображения статуса задания.

Может кто-нибудь дать мне несколько советов о том, как этого можно достичь.

1 Ответ

0 голосов
/ 25 июня 2018

Есть несколько вещей, которые вы можете сделать на этом фронте, о которых я могу подумать.

Если ваша работа содержит несколько действий, вы можете написать скрипт для опроса ожидаемых результатов этих действий. Например, представьте, что в вашем скрипте 4 различных DataFrame вызова вызовов. Вы можете провести опрос сценариев статуса HDFS / S3 , чтобы увидеть, обнаружились ли данные в ожидаемом месте вывода. Другой пример: я использовал Spark для индексации ElasticSearch , и я записал в журнал состояния статус для опроса количества записей в индексе для печати периодического прогресса.

Еще одна вещь, которую я пробовал ранее, - это использовать Аккумуляторы , чтобы попытаться следить за прогрессом и объемом записанных данных. Это работает нормально, но это немного произвольно, когда Spark обновляет видимые итоги информацией от исполнителей, поэтому я не считаю, что это слишком полезно для этой цели.

Другой подход, который вы можете использовать, - это опрос API статуса и статуса Spark напрямую. Вы сможете вытянуть всю информацию, поддерживающую интерфейс Spark, в свой код и делать с ней все, что захотите. Это не обязательно скажет вам точно, где вы находитесь в вашем коде драйвера, но если вы вручную выясните, как ваш драйвер соответствует этапам, вы можете понять это. Для справки, вот документация по опросу API статуса:

https://spark.apache.org/docs/latest/monitoring.html#rest-api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...