在多台Debian/Ubu上使用Oropo处理海量图片

来源:Linuxeden 作者:mgqw
  作者:linuxeden管理团队mgqw
简介:

    你是否曾经有过有许许多多的图片数据要处理?而处理这些数据在一台电脑上需要花费很长的时间才能处理完成。如果我们使用两台,三台甚至更多的电脑并行处理这些数据,那将会节约很多很多的时间。既然能节约大量的时间,那就让我们用多台电脑一起处理吧。你是否认为让多台电脑协同工作需要繁杂的系统配置?在Oropo面前,你那过时的想法就是NO。下面让我们看看配置有多么的简单。
    没有实际例子是很难说清楚配置过程的。就让我们从处理海量图片的实例来说明问题吧。第一种解决此问题的方法是在一台电脑上日以继夜的处理这些图片;第二种解决方法则是在多台电脑上平行批量处理这些图片。

问题描述:
    要处理一万张图片,而且每张图片都有很高的品质,目标是为每张图片创建一个体积较小的副本。而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 system来处理这些图片。处理图片的任务将会添加到一给任务队列,然后在多台电脑上并行处理这些任务。每张图片都会被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 文件中



摘要:
    前面段落说到的两种处理方式对比:第一种方法只使用一台电脑处理;而第二种方法使用多台电脑并行处理。两种方法的部署难度几乎相等,而采用第二种处理方法将节约大量的时间。


Oropo项目介绍
官方网站: http://www.oropo.org

安装指南
    在多台电脑上部署Oropo需要在中央控制节点机器上安装Oropo System,并且在其他节点机器上安装Oropo Executor进行运算处理(中央节点机器也可以安装并进行运算)。

    Oropo 软件安装包位于oropo软件仓库中,你需要通过下面步骤安装对应的软件包。


在每个运算节点电脑上进行配置:
在/etc/apt/sources.list文件开始添加下面一行:
deb http://students.mimuw.edu.pl/~ms209495/oropo/debian sid main

执行命令:
apt-get update

在中央控制机器上安装Oropo System
执行如下命令:
apt-get install oropo-system

在节点运算机器上安装Oropo Executor
执行如下命令:
apt-get install oropo-executor


配置:
中央控制机配置:
将本机添加到oropo集群并得到足够的权限
adduser 'whoami' oropo

在Oropo System种添加运算节点机器地址
oropo-monitor-ctl --id_prefix oropomonitor --add node1_ip_address
oropo-monitor-ctl --id_prefix oropomonitor --add node2_ip_address
oropo-monitor-ctl --id_prefix oropomonitor --add nodeN_ip_address

配置完这些就可以使用Oropo System控制集群进行并行运算处理了,怎么样,简单吧!


来 源:

http://www.howtoforge.org/processing-10000-pictures-using-many-computers-with-oropo-debian-ubuntu


时间:2010-04-30 12:02 来源:Linuxeden 作者:mgqw 原文链接

好文,顶一下
(7)
87.5%
文章真差,踩一下
(1)
12.5%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量