Чи можна пізніше перенести алгоритми зменшення карт, написані для MongoDB, до Hadoop?


11

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

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

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

Питання полягає в тому, що, використовуючи другий підхід та написання алгоритмів для MongoDB, чи можна їх пізніше перенести на Hadoop з мало необхідними модифікаціями та переробкою алгоритму? MongoDB просто підтримує JavaScript, але відмінності в мові програмування легко впоратися. Однак чи існують якісь принципові відмінності в моделі зменшення карт MongoDB та Hadoop, які можуть змусити нас значно змінити алгоритми для перенесення до Hadoop?


Відповіді:


4

На завершення, безумовно, буде завдання перекладу, якщо ви будете прототипувати лише монго.

Коли ви запускаєте завдання MapReduce на mongodb, у нього вбудовано джерело даних та структуру. Коли ви, зрештою, перетворитесь на hadoop, ваші структури даних можуть не виглядати однаково. Ви можете використати роз'єм mongodb-hadoop для доступу до даних монго безпосередньо зсередини 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.