2012-01-10 2 views
1

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

Каждая из этих задач занимает много CPU, поэтому мы не можем просто запускать много экземпляров на одном компьютере, потому что не будет никакой вычислительной мощности, доступной для всего. Таким образом, для завершения всего требуется несколько часов.

Наиболее очевидной задачей, как я вижу, является разделение набора файлов и одновременное их обработка несколькими машинами (5, 10, 15 машин, я еще не знаю, сколько потребуется).

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

Хотя у нас нет больших данных, я посмотрел на Hadoop для начала (мы работаем на Amazon), и его возможности обработки узлов выглядят интересными. Однако я не знаю, имеет ли смысл использовать его. Я также смотрю на Hazelcast, но у меня нет опыта с ним или с концепциями.

Что было бы хорошим подходом для этой задачи?

ответ

0

Вы можете использовать Hazelcast distributed queue.

Сначала вы можете поместить свои файлы (ссылки на файлы) в качестве задач в распределенной очереди. Затем каждый узел берет задачу из очереди, обрабатывает ее и помещает результат в другую распределенную очередь/список или записывает ее в БД/хранилище.

+0

Спасибо, общее решение Hazelcast кажется довольно хорошим, и у него также есть несколько других функций, которые я могу найти для использования. –

1

Hadoop используется для решения проблем обработки данных в широком диапазоне variety, некоторые из них также связаны с обработкой изображений. Проблема, упомянутая в OP, также может быть легко решена с использованием Hadoop. Обратите внимание, что в некоторых случаях, когда обрабатываемые данные малы, тогда с помощью Hadoop есть накладные расходы.

Если вы новичок в Hadoop, хотел бы предложить несколько вещей

  • Купить Hadoop : The Definitive Guide книгу.
  • Пройдите через MapReduce resources.
  • Начните изучение учебников (1 и 2) и настройте Hadoop на одном узле и кластере. В Amazon нет необходимости, если 1-2 машины могут быть сэкономлены для обучения.
  • Запустите sample programs и поймите, как они работают.
  • Начать миграцию проблемной области в Hadoop.

Преимущество Hadoop над другими s/w - это экосистема вокруг Hadoop. На данный момент ecosystem вокруг Hadoop огромен и растет, я не уверен в Hazelcast.

+0

Спасибо за отличные ссылки, они очень помогают. Мне кажется, что Hadoop * может быть слишком большим для простой задачи распределения и координации работы, которую я имею, и для этого Hazelcast выглядит проще. Но я сделаю некоторые практические тесты, прежде чем совершать какие-либо действия. –

+0

Просто любопытно, широко используется Hazelcast. «Мне кажется, что на самом деле Hadoop может быть слишком много для простой задачи распределения вакансий и координации, которые у меня есть, и для этого Hazelcast выглядит проще.'- как только кластер Hadoop установлен, вы можете легко использовать его для других ресурсоемких задач также в вашей компании. –

Смежные вопросы