Сколько исполнителей я должен использовать для потокового воспроизведения - PullRequest
0 голосов
/ 07 февраля 2019

Я должен написать код для потокового воспроизведения (API createDirectStream).Я буду получать около 90 тыс. Сообщений в секунду, поэтому для повышения производительности я буду использовать 100 разделов для темы kafka.

Не могли бы вы сообщить, сколько исполнителей мне следует использовать?Могу ли я использовать 50 исполнителей и 2 ядра на исполнителя?

Кроме того, подумайте, если интервал между партиями равен 10 секундам, а количество разделов в теме kafka равно 100, получу ли я 100 RDD, т.е. по 1 RDD из каждого раздела kafka?Будет ли только 1 СДР из каждого раздела в течение 10-секундного интервала пакета.

Спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

На самом деле нет хорошего ответа, и это зависит от того, сколько памяти исполнителя + ядер у вас в кластере.

Жесткое ограничение состоит в том, что вы не можете иметь больше общих процессов-исполнителей, чем разделов kafka, и вы не хотите насыщать свою сеть или другие операции ввода-вывода.

Поэтому сначала найдите, если вы закрываете сеть и / или память / диски одним исполнителем, затем запустите два и посмотрите, не удваивается ли пропускная способность и скорость сети на одной машине вдвое.Затем масштабируйте ядра и экземпляры по мере необходимости.

Dropbox недавно написал блог об их тестировании производительности

Что касается СДР, предполагая, что у вас есть отображение 1: 1 дляэкземпляры executor для разбиения, тогда каждый исполнитель будет видеть 10-секундные данные за интервал только для одного раздела, и каждый исполнитель будет иметь свою собственную RDD для обработки, таким образом, таким образом будет обрабатываться 100 полных RDD на пакет.ИМО, «количество СДР» не так уж важно, потому что вы всегда получаете 1 СДР за интервал.

...