Сохраняет ли получатель свой потоковый контент в том месте, где работает исполнитель? - PullRequest
0 голосов
/ 24 апреля 2020

Допустим, есть 3 исполнителя (ex1, ex2, ex3). В одном executor (ex1) допустим, что приемник работает, что теперь происходит, когда данные поступают в этот источник. Допустим, данные поступили в kafka topi c, скажем "topic1", теперь получатель, работающий в ex1, будет использовать эти данные, поступившие в topi c верно? Где хранятся эти данные?

  1. Хранятся ли они в самом executor ex1?
  2. Что если эти данные слишком велики? Разбивает ли он его и распределяет ли он по другим исполнителям?

Допустим, емкость 10 ГБ для каждого исполнителя (ex1, ex2, ex3). И поступили данные, скажем, 15 ГБ (гипотетическое предположение), что происходит с ex1. Это потерпит неудачу или будет обработано? Если справится, как он справится? Распределяет ли он по кластеру. Если он распределяется по кластеру, как foreachRDD вписывается в картину, если в пакете формируется только один rdd. Как если бы оно распределялось путем разделения, теперь это более одного rdd в кластере для данного конкретного пакета?

Сколько приемников работает на искровой работе? Зависит ли это от количества источников ввода? Если спарк читает из 4 разных тем кафки, значит ли это, что 4 разных приемника будут работать отдельно в разных исполнителях? Что, если есть только 2 исполнителя и 4 темы / источника kafka? В этом случае 4 разных получателя будут работать в этих двух исполнителях равномерно? Что если источники имеют нечетное число? Если у двух исполнителей и 3 источника кафки, значит, у одного из исполнителей будет два? Что если один из исполнителей умрет? Как это будет восстановлено?

1 Ответ

0 голосов
/ 24 апреля 2020
  1. Хранится ли он в том самом executor ex1?

Да, все данные, извлекаемые драйвером Spark, передаются исполнителю для дальнейшей обработки.

Что если эти данные слишком велики? Разбивает ли он его и распространяет ли он среди других исполнителей?

Данные Ha sh разбиты на разделы, прочитанные получателем Spark, и затем справедливо распределенные среди исполнителя. Если вы по-прежнему искажаете данные, попробуйте добавить пользовательский разделитель и перераспределить данные.

Сколько приемников работает на искровой работе? Зависит ли это от количества источников ввода? Если спарк читает из 4 разных тем кафки, значит ли это, что 4 разных приемника будут работать отдельно в разных исполнителях? Что, если есть только 2 исполнителя и 4 темы / источника kafka? В этом случае 4 разных получателя будут работать в этих двух исполнителях равномерно? Что если источники имеют нечетное число? Если у двух исполнителей и 3 источника кафки, значит, у одного из исполнителей будет два? Что если один из исполнителей умрет? Как это будет восстановлено?

Там только один единственный приемник (то есть одна или несколько тем), который управляет смещением Kafka. Он передает диапазон смещений на топи c исполнителю Spark, а исполнитель Spark считывает данные непосредственно из Kafka. Если кто-либо из исполнителей умирает, все его этапы повторно выполняются с последнего успешного сохраненного этапа. Распределение нагрузки Spark зависит не от размера данных, а от количества событий. В руководящих принципах говорится, что если для topi c имеется N разделов, то Spark должен иметь 2N исполнителей для достижения оптимального использования ресурсов ЦП.

Более подробную информацию можно найти по ссылке ниже, https://blog.cloudera.com/reading-data-securely-from-apache-kafka-to-apache-spark/

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