The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Обработка тысяч изображений на нескольких узлах при помощи Oropo
Проект Oropo (http://www.oropo.org/) позволяет разнести обработку большого
объема ресурсоемких операций на несколько машин в сети, организовав временный
кластер. В качестве примера рассмотрим выполнение задачи уменьшения размера
нескольких тысяч изображений с высоким разрешением.
Для преобразования буде использовать стандартные утилиты из пакета libjpeg -
djpeg и cjpeg. В итоге для обработки одной картинки создадим простой скрипт 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 

При выполнении операции на одном компьютере, нам бы потребовался
последовательный перебор всех изображений в цикле:

   #!/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 можно легко распараллелить выполнение
поставленной задачи на несколько машин в сети. Как видно из следующего скрипта,
скрипт претерпел минимальные изменения, изображения все так же перебираются
последовательно, а их распараллеливание вынесено целиком на плечи программы oropo-system-pusher.

 
Processing parallelly

#!/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
 

Настройка Oropo

Как видим, распаралелливание было организовано предельно просто, не более
трудно настроить работу инфраструктуры Oropo в Debian и Ubuntu.
 
Подключаем репозиторий с готовыми пакетами oropo, в /etc/apt/sources.list добавляем:

   deb http://students.mimuw.edu.pl/~ms209495/oropo/debian sid main

Устанавливаем:

   sudo apt-get update
   sudo apt-get install oropo-system

 
На узлах-обработчиках заданий ставим по аналогии Oropo Executor:

   sudo apt-get install ap-executor

 
Настраиваем центральный управляющий узел, на котором будем инициировать выполнение заданий. 
Добавляем себя в группу  oropo:

   adduser `whoami` oropo

Добавляем IP-адреса узлов-обработчиков:

   oropo-monitor-ctl --id_prefix oropomonitor --add 192.168.1.2
   oropo-monitor-ctl --id_prefix oropomonitor --add 192.168.1.3
   oropo-monitor-ctl --id_prefix oropomonitor --add 192.168.1.4

Все готово !
 
05.05.2010 , Источник: http://www.howtoforge.com/processin...
Ключи: parallel, cluster, oropo / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Кластерные технологии

Обсуждение [ RSS ]
  • 2, rstone (??), 18:36, 08/05/2010 [ответить]  
  • +/
    SGE ( http://gridengine.sunsource.net/ )
     
  • 3, Одмин (?), 11:58, 11/05/2010 [ответить]  
  • +/
    вместо djpeg | cjpeg можно просто через convert сделать.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру