Чи можна пізніше перенести алгоритми зменшення карт, написані для 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.