it-swarm.com.ru

В чем разница между Apache Mahout и MLlib Apache Spark?

Рассматривая базу данных MySQL products с 10 миллионами продуктов для сайта электронной коммерции.

Я пытаюсь настроить модуль классификации для классификации товаров. Я использую Apache Sqoop для импорта данных из MySQL в Hadoop.

Я хотел использовать Mahout поверх него в качестве среды машинного обучения, чтобы использовать один из его алгоритмов классификации , а затем я столкнулся с Spark, который предоставляется с MLlib знак равно

  • Так в чем же разница между двумя структурами?
  • Главным образом, каковы преимущества, недостатки и ограничения каждого из них?
53
eliasah

Основное отличие будет исходить из базовых структур. В случае Mahout это Hadoop MapReduce, а в случае MLib это Spark. Чтобы быть более конкретным - от разницы в накладных расходах
Если ваш алгоритм ML сопоставлен с одним заданием MR, основным отличием будут только накладные расходы при запуске, которые составляют десятки секунд для Hadoop MR, и, скажем, 1 секунда для Spark. Так что в случае обучения модели это не так важно.
Все будет иначе, если ваш алгоритм сопоставлен со многими заданиями. В этом случае у нас будет та же разница в накладных расходах на итерацию, и это может изменить игру.
Предположим, что нам нужно 100 итераций, каждая из которых требует 5 секунд кластерного процессора.

  • На Spark: 100 * 5 + 100 * 1 секунд = 600 секунд.
  • На Hadoop: MR (Mahout) это займет 100 * 5 + 100 * 30 = 3500 секунд.

В то же время Hadoop MR является гораздо более зрелой средой, чем Spark, и если у вас много данных, а стабильность имеет первостепенное значение, я бы счел Mahout серьезной альтернативой.

43
David Gruzman

Предупреждение - основное редактирование:

MLlib - это свободная коллекция алгоритмов высокого уровня, которая работает на Spark. Это то, что Махут раньше был только Махутом из прошлого на Hadoop Mapreduce. В 2014 году Mahout объявил, что больше не будет принимать код Hadoop Mapreduce, и полностью переключил новую разработку на Spark (возможно, появятся другие движки, такие как H2O).

Самым важным из этого является обобщенный механизм распределенной оптимизированной линейной алгебры на основе Scala и среда, включая интерактивную оболочку Scala. Возможно, самое важное слово "обобщено". Поскольку он работает на Spark, все, что доступно в MLlib, можно использовать с механизмом линейной алгебры Mahout-Spark.

Если вам нужен общий движок, который будет делать многое из того, что делают инструменты типа R, но на действительно больших данных, посмотрите на Mahout. Если вам нужен конкретный алгоритм, посмотрите на каждый, чтобы увидеть, что у них есть. Например, Kmeans работает в MLlib, но если вам нужно кластеризовать A'A (матрицу совпадений, используемую в рекомендациях), вам понадобятся оба, потому что MLlib не имеет транспонирования матрицы или A'A (на самом деле Mahout делает тонко-оптимизированный A'A, так что транспонирование оптимизировано).

Mahout также включает в себя некоторые инновационные рекомендующие строительные блоки , которые предлагают вещи, которых нет ни в одном другом OSS.

У Mahout все еще есть свои старые алгоритмы Hadoop, но, поскольку быстрые вычислительные механизмы, такие как Spark, становятся нормой, большинство людей будут вкладывать туда средства.

42
pferrel