Storm поддерживает параллелизм задач или данных?

Я пытаюсь изучить функции параллелизма и масштабируемости, предлагаемые Storm, и прочитать следующую статью http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html.. Я смущен тем, поддерживает ли Storm параллелизм данных или задач. Что я мог понять (могу ошибаться), так это то, что Storm поддерживает параллелизм задач (поскольку степень параллелизма ограничена количеством задач в топологии). Если это так, то как его можно использовать для крупномасштабной параллельной обработки данных, которая требует параллелизма данных.

Любая помощь будет принята с благодарностью. Спасибо :)


person Jyotika    schedule 15.01.2016    source источник
comment
Я думаю, что этот вопрос принадлежит programmers.stackexchange.com   -  person Martin Schneider    schedule 15.01.2016
comment
@MartinSchneider, ссылаясь на другие сайты, часто полезно указать, что кросс-постинг не одобряется   -  person gnat    schedule 15.01.2016
comment
ОК, я должен отметить, что я думаю, что это место там и только там :)   -  person Martin Schneider    schedule 15.01.2016
comment
Я новичок в этом сообществе. Спасибо за информацию. Позаботится в будущем. )   -  person Jyotika    schedule 16.01.2016


Ответы (1)


Storm не следует терминологии учебника. На самом деле Storm поддерживает данные, задачи и конвейерный параллелизм.

Если у вас есть оператор и назначается параллелизм больше единицы (parallelism_hint), вы получаете столько потоков, сколько указано параметром, каждый из которых выполняет один и тот же код с разными данными, т. е. вы получаете параллелизм данных. Вы можете дополнительно назначить параметр number_of_tasks (который должен быть >= parallelism_hint), чтобы разделить входные данные на number_of_task разделов/подпотоков (т. е. больше разделов, чем исполнителей). Таким образом, некоторым потокам исполнителя необходимо обрабатывать несколько разделов/подпотоков (называемых задачами в Storm). Это не увеличивает параллелизм (возможно, параллелизм). Однако он позволяет изменять количество исполнителей во время выполнения.

Поскольку в вашей топологии есть несколько носиков и болтов, и все эти носики и болты выполняются в разных потоках и даже на разных машинах, у вас здесь параллелизм задач (не путать с использованием Storm срочное задание!). Поскольку между носиками/болтами существуют отношения «производитель/потребитель», вы также получаете конвейерный параллелизм, который является особой формой параллелизма задач. Еще одна форма параллелизма задач в Storm — возможность одновременного запуска нескольких топологий.

person Matthias J. Sax    schedule 15.01.2016
comment
Спасибо :). Был озадачен интерпретацией Storm термина задача и, следовательно, путал параметр number_of_task с параллелизмом уровня задачи. - person Jyotika; 16.01.2016
comment
У меня еще один вопрос; если parallelism_hint‹=number_of_task, значит ли это, что максимальная степень параллелизма данных предопределена и не может быть превышена за пределами параметра number_of_task (который является статическим и не может быть изменен командой перебалансировки Storm). Спасибо - person Jyotika; 16.01.2016
comment
Да, количество задач — это верхняя граница параллелизма. Если бы у вас было больше исполнителей (т.е. потоков), то были бы потоки без работы, поскольку доступных разделов/подпотоков меньше, чем исполнителей. - person Matthias J. Sax; 16.01.2016