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


11

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

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

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

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


Ответы:


4

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

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

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


5

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


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

4

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


Спасибо за ваш пост, но не могли бы вы включить сюда общее описание связанного решения? Ссылка может содержать ответ на вопрос, но ответы только на ссылки не приветствуются.
— Рубенс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.