Стратегия перебалансировки и цепочки Flink - PullRequest
0 голосов
/ 20 апреля 2020

Фон

Мы используем dataStream.rebalance(), чтобы создать равную нагрузку на наши разделы. Однако мы обычно устанавливаем стратегию объединения, например, HEAD, чтобы разрешить распределение многопоточных преобразований.

Вопрос

Устанавливает стратегию объединения непосредственно перед балансировкой рекомендуемой практики или выполняет Flink автоматически разрешить распределение многопоточных преобразований после перебаланса?

1 Ответ

1 голос
/ 21 апреля 2020

Как пользователь, вы обычно никогда не устанавливаете стратегию цепочки. Вы можете установить его только если у вас есть пользовательские операторы. Фактически, в настоящее время мы не поддерживаем стратегию формирования цепочек на уровне операторов и разрешаем ее только на уровне фабрики операторов.

По умолчанию все операторы ALWAYS являются связными. Это означает, что пока они совместно используют один и тот же слот и связаны с прямым каналом, сетевой / локальный канал пропускается, а записи передаются непосредственно следующему преобразованию. Следовательно, никакие операторы не могут быть объединены в цепочку, если они подключены через любые типы случайных соединений (например, rebalance).

Таким образом, без изменения какой-либо стратегии объединения, вы получите длинные конвейеры, которые разделены любой операцией перемешивания. .

Теперь, если вы измените его на HEAD для всех операторов, непосредственно следующих за операцией тасования, у вас фактически не будет операции. Голова означает, что оператор может быть только главой цепочки операторов. Если вы также измените стратегию всех преобразований, следующих за случайным образом, вы фактически не получите никакой цепочки. (Этот вопрос не совсем понятен из вашего вопроса)

TL; DR не меняет стратегию цепочки, если вы не реализуете своего собственного оператора. Это не будет быстрее, чем по умолчанию.

...