Как отслеживать глобальную частоту отказов задач / заданий в кластере - PullRequest
2 голосов
/ 26 сентября 2019

Я хочу отслеживать глобальную частоту отказов для заданий / задач / этапов во всех узлах кластера.В настоящее время идея состоит в том, чтобы проанализировать файлы журналов в HDFS, записанные сервером истории, и получить эти данные, но это кажется неуклюжим.Есть ли лучшие подходы?В идеале у меня был бы доступ к этой информации на каждую работу, представленную на стороне клиента, но, похоже, это не так.Какой рекомендуемый способ подойти к этому?

1 Ответ

1 голос
/ 26 сентября 2019

Одной из идей является расширение SparkListener и сбор метрик вокруг сбоев в любом месте (например, отправка событий в ELK).

Некоторые полезные события:

case class SparkListenerExecutorBlacklisted(
    time: Long,
    executorId: String,
    taskFailures: Int)
  extends SparkListenerEvent

case class SparkListenerExecutorBlacklistedForStage(
    time: Long,
    executorId: String,
    taskFailures: Int,
    stageId: Int,
    stageAttemptId: Int)
  extends SparkListenerEvent

case class SparkListenerNodeBlacklistedForStage(
    time: Long,
    hostId: String,
    executorFailures: Int,
    stageId: Int,
    stageAttemptId: Int)
  extends SparkListenerEvent

case class SparkListenerNodeBlacklisted(
    time: Long,
    hostId: String,
    executorFailures: Int)
  extends SparkListenerEvent

И слушатели:

def onExecutorBlacklisted(executorBlacklisted: SparkListenerExecutorBlacklisted): Unit
def onExecutorBlacklistedForStage(executorBlacklistedForStage: SparkListenerExecutorBlacklistedForStage): Unit
def onNodeBlacklistedForStage(nodeBlacklistedForStage: SparkListenerNodeBlacklistedForStage): Unit
def onNodeBlacklisted(nodeBlacklisted: SparkListenerNodeBlacklisted): Unit

Обратите внимание, что вы можете подписать слушателя с помощью контекста Spark addSparkListener.Подробнее в этом другом потоке переполнения стека: Как реализовать настраиваемый прослушиватель / трекер заданий в Spark?

Примечание: чтобы заставить его работать с PySpark, выполните шаги, описанные в этом другом переполнении стека.нить: Как добавить SparkListener из pySpark в Python?

...