Processing 10000 Pictures Using Many Computers With Oropo (Debian/Ubuntu)

Обработка 10000 фотографий с использованием множества компьютеров по технологии Oropo
Введение
Бывало ли так, что Вам нужно обработать кучу данных? И в какой-то момент, после того как мы начинаем это дело, к нам приходит понимание, что это будет длиться веками. Это могло бы делаться быстрее, если бы мы могли использовать два, три или еще больше компьютеров. Так давайте их используем! Вы можете подумаеть, что потребуется много настраивать? Но окажетесь неправы. С Oropo это просто. Давайте посмотрим.
Сложно что-то обсуждать без примера. Давайте поговорим о проблеме обработки большого количества фотографий. Первый подход к решению этой проблемы заключается в обработке фотографий последовательно на одном компьютере. Второй подход заключается в обработке фотографий параллельно на нескольких компьютерах.
Описание проблемы
Проблема заключается в обработке 10000 фотографий. Каждая фотография высокого качества, и целью является создание уменьшенной версии каждого из них. Существует библиотека libjpeg, которая предоставляет соответствующие программы.
Используемые программы из libjpeg:
djpeg – распаковывает файл JPEG в файл изображения.
cjpeg – сжимает изображение в JPEG.
Сценарий алгоритма обработки одного изображения:
параметр: путь к фотографии.
результат: уменьшенный вариант изображения.
Пример сценария в bash:
Script make_smaller.sh
#!/bin/bash
QUALITY=30
if [ $# -ne 1 ]; then
echo «arguments» 1>&2
exit 1;
fi
FILE_PATH=$1
djpeg $FILE_PATH | cjpeg -quality $QUALITY
Последовательная обработка
Все фотографии могут быть обработаны с помощью ссылки на сценарий make_smaller.sh для каждого изображения.
Последовательная обработка
#!/bin/bash
MAKE_SMALLER=$PWD/make_smaller.sh
IMGS_DIR=$PWD/imgs
TARGET_DIR=$PWD/imgs_smaller
for file in $IMGS_DIR/*; do
bash $MAKE_SMALLER $file > $TARGET_DIR/${file##*/}
done
Параллельная обработка
Мы можем обработать все фотографии с помощью системы Oropo Executor. Задачи для обработки изображения будут добавлены в очередь и начнут обрабатываться параллельно на нескольких компьютерах. Каждая фотография будет обработана сценарием make_smaller.sh.
Параллельная обработка
#!/bin/bash
MAKE_SMALLER=$PWD/make_smaller.sh
IMGS_DIR=$PWD/imgs
for file in $IMGS_DIR/*; do
oropo-system-pusher -p «string:bash» -p «path:$MAKE_SMALLER» -p «path:$file»
done
Результаты обработки должны быть в файлах /var/lib/oropo/response/*/0
Popularity: 1%
Этот материал находится на сайте http://compiling.ru
Оставьте свой отзыв