В последней части цикла про Hadoop поговорим о том, насколько платформа Hadoop является «серебряной пулей» в мире распределенных вычислений;
о спектре решаемых ею задач и ограничениях платформы и о критике и перспективах платформы.
Содержание цикла:
Области применения и ограничения Hadoop
Архитектура программной платформы Hadoop, как и любая архитектура, накладывает некоторые
ограничения на:
- список задач, которые можно с помощью это программной платформы, решить эффективно;
- условия, в которых поставленные задачи решаются.
Начнем с последнего пункта: применение Hadoop MapReduce наиболее эффективно на больших
кластерах, где издержки на межсетевые взаимодействие пренебрежительно малы по сравнению
со степенью распараллеливания.
Задачи, решаемые с помощью Hadoop MapReduce, должны отвечать одному основному требованию
– они должны относиться к классу задач, параллельных по данным. Под это ограничение
попадает широкий спектр исследовательских и бизнес-задач, в число которых входит:
- анализ данных (Data Mining);
- машинное обучение (Machine Learning);
- индексирование неструктурированных данных и поиск по ним.
Ограничениям платформы Hadoop складываются как из ограничений отдельных компонентов
этой платформы (ограничения HDFS и
ограничения Hadoop MapReduce),
так и ограничений собственно самой платформы.
К последним можно отнести:
- Ограничение масштабируемости кластера Hadoop: ~4K вычислительных узлов; ~40K параллельных заданий;
- Сильная связанность фреймворка распределенных вычислений и клиентских библиотек, реализующих распределенный алгоритм. Как следствие:
- Отсутствие поддержки альтернативной программной модели выполнения распределенных вычислений: в Hadoop v1.0 поддерживается только модель вычислений map/reduce.
- Невозможность использования в средах с высокими требованиями к надежности из-за наличие в платформе Hadoop единичных точек отказа;
- Проблемы версионной совместимости: требование по единовременному обновлению всех вычислительных узлов кластера при обновлении платформы Hadoop (установке новой версии или пакета обновлений);
- Отсутствие поддержки работы с обновляемыми/потоковыми данными.
Критика Hadoop и перспективы
В 1986 году в статье The Case for Shared Nothing Майкл Стоунбрейкер выделил три
категории систем, способных хранить данные: с разделяемой памятью (Shared Memory,
SM), с разделяемыми дисками (Shared Disk, SD) и не разделяющими ничего (Shared Nothing,
SN).
С появлением бюджетных многоядерных систем наблюдается интенсивный переход от последовательной
модели вычисления, основанной на схеме фон Неймана, к параллельной модели вычисления.
Хорошо знакомый разработчикам подход SISD (Single Instruction Single Data – «один
поток команд, один поток данных») сменил подход SIMD (Single Instruction Multiple
Data – «один поток команд, много потоков данных»). Следующий эволюционный шаг в
проектировании высоконагруженных распределенных систем – это, безусловно, подход
MIMD (Multiple Instruction Multiple Data – «много потоков команд, много потоков
данных»).
Hadoop является способом построения программных комплексов с архитектурой, входящей
в подмножество архитектур MIMD – SPMD (Single Program Multiple Data). Другое, но
не меньшее, достоинство Hadoop в том, что программный платформа разработана как
инфраструктурное решение. Последнее позволяет как архитектору ПО, так и разработчику
уделять меньшее внимание вопросам, связанным с распараллеливание выполнения программы,
и большее, связанное с предметной областью разрабатываемого программного комплекса.
Архитектура Hadoop также является частым объектом критики. Среди наиболее частых
недостатков Hadoop вызывают: отсутствие у платформы поддержки схем данных (по аналогии
со схемами в БД) и чрезмерная низкоуровневость интерфейсов, с которыми приходится
работать разработчикам [21]. Отчасти следствием указанных ограничений является не
слишком широкий спектр задач параллельных по данным, который платформа Hadoop может
решать более эффективно, чем решения на основе реляционных баз данных.
Еще один повод для критики Hadoop – это инновационность проекта. Некоторые оппоненты
указывают, что парадигма map/reduce, Shared Nothing-подход и другие ключевые концепции,
применяемые в Hadoop, были давно известны в научной среде, и существовали даже коммерческие
реализации для отдельных из этих принципов.
Сторонники Hadoop же отмечают, что многие сложные задач могут и должны быть разбиты
на более мелкие, которые, в большинстве своем, могут быть приведены к map/reduce-реализации.
Заслуженно отмечается, что Hadoop – уникальный продукт, объединивший многие известные
концепции, и позволивший вынести задачу распараллеливания ближе к инфраструктурному
уровню, нежели к уровню логики приложения.
Установка автоматического управления распределенными вычислениями одним из приоритетов
заставила пересмотреть позицию относительного многих аспектов функционирования больших
вычислительных кластеров. Платформа Hadoop – это не просто программная реализация
симбиоза нескольких концепций, это качественно новый подход к проектированию приложений
для анализа и работы с большими объемами данных.
Не лишённая недостатков и объединившая в себе многие современные концепции и технологии
массово-параллельной обработки данных, платформа Hadoop, сама являясь новым взглядом
на архитектору высоконагруженных программных систем, дала начало новым инновационным
идеям.
Одна из таких наиболее интересных идей, взгляды к которой прикованы как со стороны исследовательских
центров, так и со стороны крупных корпораций – это интеграция Hadoop и облачных платформ.