2017-02-15 3 views
1

Можно ли использовать одно и то же место для более чем одного потребителя? Мы используем подход Direct Streaming.Использование одного и того же пункта контрольной точки для нескольких потребителей - Прямая потоковая передача Spark

Пример кода:

ssc.checkpoint(checkpointDirectory) 
val dstream1 = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet1).map(_._2) 
val dstream2 = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet2).map(_._2) 

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

В месте контрольной точки он собирается создать отдельный каталог для каждого смещения темы?

ответ

1

В месте расположения контрольной точки собирается ли создать отдельный каталог для каждого смещения темы?

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

new Path(checkpointDir, PREFIX + checkpointTime.milliseconds) 

Где PREFIX является checkpoint-. Вы увидите что-то вроде этого:

-rw-r--r-- 1 spark spark 9434 Feb 14 17:59 checkpoint-1487095188000 
-rw-r--r-- 1 spark spark 9456 Feb 14 17:59 checkpoint-1487095188000.bk 
-rw-r--r-- 1 spark spark 9423 Feb 14 17:59 checkpoint-1487095192000 
-rw-r--r-- 1 spark spark 9443 Feb 14 17:59 checkpoint-1487095192000.bk 
-rw-r--r-- 1 spark spark 9426 Feb 14 17:59 checkpoint-1487095196000 
-rw-r--r-- 1 spark spark 9446 Feb 14 17:59 checkpoint-1487095196000.bk 

Где вы можете видеть, что мой пакетный интервал составляет 4000 миллисекунд.

Поскольку ваши потоки работают с общим StreamingContext, они оба используют один и тот же пакетный интервал и будут пытаться переопределить файлы друг друга. Хуже того, вы можете ошибочно попытаться восстановить данные одного потока внутри другого.

Используйте отдельные контрольные точки для каждого потока.

Что делать, если у меня есть один потребитель с несколькими темами?

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

+0

Спасибо, что, если у меня есть один потребитель с несколькими темами? Поскольку у нас есть другая работа, где у нас есть один потребитель с несколькими темами, а контрольная точка включена, не могли бы вы также обновить свой asnwer для этого? – Shankar

+0

@Shankar Обновлено. –

+0

Большое спасибо за ваш подробный ответ, я узнал много вещей, связанных с искровым потоком из вашего ответа ... – Shankar

Смежные вопросы