В нашей компании у нас есть база данных MongoDB, содержащая много неструктурированных данных, по которым нам нужно запускать алгоритмы преобразования карт для генерации отчетов и других анализов. У нас есть два подхода для выбора необходимого анализа:
Один из подходов заключается в извлечении данных из MongoDB в кластер Hadoop и проведении анализа полностью на платформе Hadoop. Однако это требует значительных инвестиций в подготовку платформы (программного и аппаратного обеспечения) и обучение команды работе с Hadoop и написанию для нее задач сокращения карт.
Другой подход заключается в том, чтобы просто приложить усилия к разработке алгоритмов сокращения карт и запустить алгоритмы на функциональных возможностях MongoDB map-Reduce. Таким образом, мы можем создать начальный прототип окончательной системы, которая может генерировать отчеты. Я знаю, что функции сокращения карт MongoDB намного медленнее по сравнению с Hadoop, но в настоящее время данные не настолько велики, что делает это узким местом еще, по крайней мере, в течение следующих шести месяцев.
Вопрос в том, используя второй подход и написание алгоритмов для MongoDB, могут ли они быть позже перенесены в Hadoop с небольшими необходимыми изменениями и перепроектированием алгоритма? MongoDB просто поддерживает JavaScript, но программирование языковые различия просты в обращении. Тем не менее, есть ли принципиальные различия в карте-свертке модели MongoDB и Hadoop, которые могут заставить нас редизайн алгоритмов существенно для портирования на Hadoop?
источник
Ответы:
В конце определенно будет задание на перевод, если вы создадите прототип, используя только монго.
Когда вы запускаете задачу MapReduce на mongodb, в нее встроены источник данных и структура. Когда вы в конечном итоге преобразуетесь в hadoop, ваши структуры данных могут не выглядеть одинаково. Вы можете использовать соединитель mongodb-hadoop для доступа к данным mongo непосредственно из hadoop, но это будет не так просто, как вы думаете. Время, чтобы выяснить, как именно выполнить преобразование наиболее оптимально, будет легче обосновать, если у вас есть прототип, IMO.
Хотя вам нужно будет переводить функции mapreduce, базовый псевдокод должен хорошо применяться в обеих системах. Вы не найдете ничего, что можно сделать в MongoDB, что нельзя сделать с помощью Java или что значительно сложнее с Java.
источник
Вы можете использовать алгоритмы преобразования карт в Hadoop, не программируя их на Java. Он называется потоковым и работает как конвейер Linux. Если вы считаете , что вы можете порт ваши функции для чтения и записи на терминал, он должен работать хорошо. Вот это пример блога , который показывает , как использовать карту снижения функций , написанных на Python в Hadoop.
источник
Вы также можете создать MongoDB-Hadoop соединение .
источник