параллельность окон в шторме Apache - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу распараллелить оконную операцию в шторме Apache или, другими словами, распределенную оконную операцию.Мне нужно сравнить производительность, когда мы запускаем окно в одном узле и когда мы распределяем его работу по нескольким узлам с распределением.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 марта 2019

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

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

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

например

setBolt("window", new YourWindowedBolt().withWindow(...))
  .shuffleGrouping("your-spout");
setBolt("work", new YourProcessWindowBolt(), 5)
  .setTasks(5)
  .shuffleGrouping("window");

, и тогда выполнение вашего оконного болта будет выглядеть примерно так:

execute(TupleWindow window) {
  //Emit the entire window as one tuple to next bolt
  List<Tuple> tuples = window.get();
  Values values = new Values(new ArrayList<Tuple>(tuples));
  collector.emit(tuples, values);
}
...