Распределенное программирование Java меньшего масштаба - PullRequest
1 голос
/ 22 января 2012

Я немного больше узнаю о hadoop и его приложениях, и я понимаю, что он ориентирован на массивные наборы данных и большие файлы. Допустим, у меня было приложение, в котором я обрабатывал относительно небольшое количество файлов (скажем, 100 КБ), что не так уж много для чего-то вроде hadoop / hdfs. Однако для запуска на одной машине требуется некоторое количество времени, поэтому я хотел бы распределить процесс.

Проблема может быть разбита на проблему уменьшения стиля карты (например, каждый из файлов может быть обработан независимо, а затем я могу агрегировать результаты). Я открыт для использования инфраструктуры, такой как Amazon EC2, но я не очень уверен в том, какие технологии нужно исследовать для фактического агрегирования результатов процесса. Похоже, хэдуп здесь может быть немного излишним.

Кто-нибудь может дать рекомендации по этому типу проблемы?

1 Ответ

1 голос
/ 23 января 2012

Прежде всего, вы можете пересмотреть свое предположение, что вы не можете объединять файлы.Даже изображения могут быть объединены - вам просто нужно выяснить, как это сделать таким образом, чтобы вы снова могли разбивать их в своих картографических системах.Сочетание их с каким-либо часовым значением или магическим числом между ними может позволить превратить их в один гигантский файл.

Другие варианты включают HBase, где вы можете хранить изображения в ячейках.HBase также имеет встроенные TableMapper и TableReducer и может хранить результаты вашей обработки вместе с необработанными данными в полуструктурированном виде.

РЕДАКТИРОВАТЬ: Что касается вопроса "is Hadoop overkill", вам нужночтобы учесть следующее:

  1. Hadoop добавляет как минимум одну служебную машину (имя узла HDFS).Обычно вы не хотите хранить данные или запускать задания на этом компьютере, поскольку это SPOF.

  2. Hadoop лучше всего подходит для обработки данных в пакетном режиме с относительно высокой задержкой.Как упоминает @Raihan, есть несколько других архитектур распределенных вычислений FOSS, которые могут лучше удовлетворить ваши потребности, если вам нужны результаты в режиме реального времени или с низкой задержкой.

  3. 100k файлов не так уж и мало.Даже если они имеют по 100 Кбайт, это 10 Гбайт данных.

  4. Помимо вышеописанного, Hadoop - это способ решения задач распределенных вычислений с относительно низкими издержками.За этим стоит огромное, полезное сообщество, поэтому вы можете быстро получить помощь, если она вам нужна.И он ориентирован на работу на дешевом оборудовании и бесплатной ОС, поэтому никаких существенных накладных расходов на самом деле нет.

Короче, я бы попробовал его, прежде чем выбросить его для чего-то другого.

...