Компромиссы между Storm и Hadoop (MapReduce)

12

Может ли кто-нибудь любезно рассказать мне о компромиссах, возникающих при выборе между Storm и MapReduce в Hadoop Cluster для обработки данных? Конечно, помимо очевидного, что Hadoop (обработка с помощью MapReduce в кластере Hadoop) является системой пакетной обработки, а Storm - системой обработки в реальном времени.

Я немного работал с Hadoop Eco System, но я не работал со Storm. Просмотрев множество презентаций и статей, я так и не смог найти удовлетворительного и исчерпывающего ответа.

Примечание: термин компромисс здесь не предназначен для сравнения с аналогичными вещами. Он предназначен для представления последствий получения результатов в режиме реального времени, которые отсутствуют в системе пакетной обработки.

mbbce
источник

Ответы:

13

MapReduce : отказоустойчивая распределенная вычислительная среда. MapReduce позволяет вам работать с огромными объемами данных, при этом требуется много работы для предотвращения сбоев из-за аппаратного обеспечения. MapReduce - плохой выбор для вычисления результатов на лету, потому что он медленный. (Типичное задание MapReduce занимает порядка минут или часов, а не микросекунд)

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

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

Storm : потоковая вычислительная система в реальном времени. Storm - это онлайн-фреймворк, означающий в этом смысле сервис, который взаимодействует с работающим приложением. В отличие от MapReduce, он получает небольшие фрагменты данных (не целый файл) по мере их обработки в вашем приложении. Вы определяете группу данных для выполнения операций с данными. Распространенным и простым вариантом использования Storm является отслеживание счетчиков и использование этой информации для заполнения панели мониторинга в реальном времени.

Storm не имеет (обязательно) никакого отношения к сохранению ваших данных. Здесь потоковое вещание - это еще один способ сказать, храня информацию, которая вам небезразлична, и выбрасывая остальное. В действительности у вас, вероятно, есть постоянный уровень в приложении, который уже записал данные, и поэтому это хорошее и обоснованное разделение проблем.

Если вы хотите узнать больше ... Если вы хотите узнать больше о системах реального времени, которые соответствуют параметрам с MR и применяют модели по-другому, то здесь есть слайды для выступления, которое я дал на тему создания механизмов рекомендаций в реальном времени. HBase.

Отличная статья, которая интересным образом сочетает счет и постоянство в реальном времени, - это персонализация Новостей Google: масштабируемая онлайн-совместная фильтрация

Еще один интересный брак MR и Storm - SummingBird . Summingbird позволяет вам определять операции анализа данных, которые можно применять с помощью Storm или MR.

j_houg
источник
9

Это все равно что спросить о компромиссах между сковородой и вашим ящиком столового серебра. Это не две вещи, которые вы сравниваете, правда. Вы можете использовать их вместе как часть более крупного проекта.

Сам Hadoop - это не одно, а название федерации сервисов, таких как HDFS, Hive, HBase, MapReduce и т. Д. Storm - это то, что вы используете с некоторыми из этих сервисов, такими как HDFS или HBase. Это среда потоковой обработки. В расширенной экосистеме Hadoop есть и другие, например Spark Streaming.

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

Шон Оуэн
источник
Я назвал обработку с помощью MapReduce в системе Hadoop Echo просто как Hadoop, потому что этот термин обычно используется (хотя технически это неправильно и я соответственно изменил вопрос).
mbbce
Может быть, я ошибаюсь, но я думаю, что это нечто большее, чем просто обработка почти в реальном времени. Если бы между ними не было компромиссов, всем хотелось бы делать вещи почти в реальном времени. Гибридный подход позволяет получить лучшее из обоих миров (в некоторой степени). Вот почему Summingbird был создан.
mbbce
1
Основным отличием является то, что система потоковой обработки может просто касаться данных один раз, и сама по себе не имеет долгосрочного состояния. Некоторые проблемы не могут быть решены таким образом. Для проблем, для которых это нормально, быстрее использовать систему, которая не требует предварительного сохранения данных в (перечитываемом) хранилище. MapReduce по своей природе не медленнее, чем Storm; оба являются контейнерами. Это разные парадигмы для разных задач.
Шон Оуэн
Отсутствие долговременного постоянного состояния означает ли это, что такие системы, близкие к реальному времени, не могут накапливать входные обновления в течение длительного времени? Можете ли вы отослать меня к любым ресурсам, которые обсуждают это дальше?
mbbce
Это своего рода определение потоковой системы. Если вы представляете себе систему, которая может получить доступ к долгосрочному состоянию по желанию, она на самом деле не потоковая.
Шон Оуэн