Могут ли алгоритмы сокращения карт, написанные для MongoDB, быть перенесены в Hadoop позже?

11

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

  1. Один из подходов заключается в извлечении данных из MongoDB в кластер Hadoop и проведении анализа полностью на платформе Hadoop. Однако это требует значительных инвестиций в подготовку платформы (программного и аппаратного обеспечения) и обучение команды работе с Hadoop и написанию для нее задач сокращения карт.

  2. Другой подход заключается в том, чтобы просто приложить усилия к разработке алгоритмов сокращения карт и запустить алгоритмы на функциональных возможностях MongoDB map-Reduce. Таким образом, мы можем создать начальный прототип окончательной системы, которая может генерировать отчеты. Я знаю, что функции сокращения карт MongoDB намного медленнее по сравнению с Hadoop, но в настоящее время данные не настолько велики, что делает это узким местом еще, по крайней мере, в течение следующих шести месяцев.

Вопрос в том, используя второй подход и написание алгоритмов для MongoDB, могут ли они быть позже перенесены в Hadoop с небольшими необходимыми изменениями и перепроектированием алгоритма? MongoDB просто поддерживает JavaScript, но программирование языковые различия просты в обращении. Тем не менее, есть ли принципиальные различия в карте-свертке модели MongoDB и Hadoop, которые могут заставить нас редизайн алгоритмов существенно для портирования на Hadoop?

Амир Али Акбари
источник
2
blog.mongodb.org/post/57611443904/mongodb-connector-for-hadoop
Константин В. Салихов

Ответы:

4

В конце определенно будет задание на перевод, если вы создадите прототип, используя только монго.

Когда вы запускаете задачу MapReduce на mongodb, в нее встроены источник данных и структура. Когда вы в конечном итоге преобразуетесь в hadoop, ваши структуры данных могут не выглядеть одинаково. Вы можете использовать соединитель mongodb-hadoop для доступа к данным mongo непосредственно из hadoop, но это будет не так просто, как вы думаете. Время, чтобы выяснить, как именно выполнить преобразование наиболее оптимально, будет легче обосновать, если у вас есть прототип, IMO.

Хотя вам нужно будет переводить функции mapreduce, базовый псевдокод должен хорошо применяться в обеих системах. Вы не найдете ничего, что можно сделать в MongoDB, что нельзя сделать с помощью Java или что значительно сложнее с Java.

Стив Каллестад
источник
5

Вы можете использовать алгоритмы преобразования карт в Hadoop, не программируя их на Java. Он называется потоковым и работает как конвейер Linux. Если вы считаете , что вы можете порт ваши функции для чтения и записи на терминал, он должен работать хорошо. Вот это пример блога , который показывает , как использовать карту снижения функций , написанных на Python в Hadoop.

Дамиан Мельничук
источник
1
Это все равно заставило бы Монго делать обработку, которой, как я полагаю, следует избегать в окончательном решении. В любом случае, я дам вам голос за то, что вы воспитали важную часть знаний.
Стив Каллестад
4

Вы также можете создать MongoDB-Hadoop соединение .

phyrox
источник
Спасибо за ваш пост, но не могли бы вы включить сюда общее описание связанного решения? Ссылка может содержать ответ на вопрос, но ответы только на ссылки не приветствуются.
Рубенс