2016-09-15 3 views
3

Я создаю приложение Apache Spark, которое действует на несколько потоков.Spark Streaming и высокая доступность

Я прочитал Tuning раздел Производительность документации: http://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning

То, что я не получаю:

1) Расположены на потоковые приемники на нескольких узлах рабочих или машины водитель?

2) Что произойдет, если один из узлов, которые получают данные не удается (выключение/перезагрузка)

ответ

3

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

Ресиверы расположены на рабочих узлов, которые несут ответственность за потребление источника, который хранит данные.

Что произойдет, если один из узлов, которые получает данные не удается (мощность выключение/перезагрузка)

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

Именно поэтому необходим повторно используемый источник, такой как Kafka или AWS Kinesis.

+0

Хорошо, так что если рабочий с приемником будет убит - драйвер повторит создание приемника, и новый работник снова начнет получать данные - все это автоматически. Это звучит разумно, но где-то это документировано? –

+1

@PiotrR Я думаю, вы [ищете это] (http://spark.apache.org/docs/latest/streaming-programming-guide.html#fault-tolerance-semantics) –