Параллельная обработка нескольких файлов в кластере - PullRequest
1 голос
/ 10 января 2012

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

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

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

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

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

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

Ответы [ 2 ]

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

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

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

  • Купить Hadoop: полное руководство книга.
  • Пройдите через MapReduce ресурсы .
  • Начните изучать руководства ( 1 и 2 ) и настройте Hadoop на одном узле и кластере. Амазонке нет необходимости, если для обучения можно сэкономить 1-2 машины.
  • Запустите примеры программ и поймите, как они работают.
  • Начните перенос проблемной области в Hadoop.

Преимущество Hadoop перед другими программами - это экосистема вокруг Hadoop. На сегодняшний день экосистема вокруг Hadoop огромна и растет, я не уверен в Hazelcast.

0 голосов
/ 10 января 2012

Вы можете использовать Распределенную очередь Hazelcast.

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

...