Технология параллельной обработки данных Map/Reduce, которую в начале двухтысячных популяризовал Google, продолжает утрачивать популярность. Теперь от неё отказались разработчики библиотеки Apache Mahout, реализующей алгоритмы машинного обучения, которые могут использоваться для коллаборативной фильтрации, кластеринга и классификации.
Все пять лет своего существования она базировалась на Apache Hadoop — популярной реализации Map/Reduce с открытым исходным кодом. Однако в прошлом году от Map/Reduce отвернулся и Hadoop: его новая версия по-прежнему позволяет использовать эту технологию, но она утратила свой исключительный статус и стала одним из множества равноправных вариантов.
Одна из причин утраты популярности заключается в том, что Map/Reduce предназначен для пакетной обработки данных. Это значит, что зачастую неизбежны значительные и не всегда предсказуемые задержки. Кроме того, далеко не все алгоритмы удаётся уложить в прокрустово ложе Map/Reduce.
В качестве альтернативы Hadoop разработчики Apache Mahout избрали фреймворк Apache Spark, предназначенный для обработки информации в оперативной памяти, и средство для работы с данными под названием H2O, которое разрабатывают в стартапе 0xdata. И Spark, и H2O являются проектами с открытым исходным кодом.
О том, что делает Spark привлекательнее, чем Hadoop, «Компьютерра» уже рассказывала:
Apache Spark представляет собой систему организации параллельной обработки данных, написанную на функциональном языке программирования Scala. В отличие от технологии MapReduce, как правило, используемой для обработки информации, которая записана на жёстких дисках, Spark обрабатывает данные, хранящиеся в оперативной памяти. Создатели технологии полагают, что такой подход многократно увеличивает быстродействие во многих задачах, связанных с машинным обучением или data mining. Apache Spark уже используют многие компании, в том числе Yahoo!, AirBNB, Conviva и Quantifind.
H2O, как и Spark, работает с информацией в оперативной памяти и оптимизирован специально для проведения определённых статистических вычислений на данных, которые хранятся в распределённом хранилище Hadoop Distributed File System. Многие разновидности машинного обучения подразумевают именно такие статистические вычисления, так что H2O — это идеальная основа Mahout.
Основные алгоритмы Mahout для кластеризации, классификации и коллаборативной фильтрации ориентированы на пакетное исполнение, однако разработчики и в прошлом оставляли пользователям возможность обойтись без Hadoop и даже Map/Reduce как такового. Когда Map/Reduce стал утрачивать прежнюю привлекательность, они решили воспользоваться этой возможностью сами.