使用Oropo处理10000张图片(Debian / Ubuntu)
介绍
你有没有很多数据要处理? 在经过一段时间的处理之后,我们意识到需要几年的时间才能完成。 如果我们可以使用两台或三台甚至更多的电脑,会更快。 让我们用一些电脑 - 你认为这是很多配置? 你错了。 与Oropo很容易。 让我们来看看。
没有一个例子就很难谈论处理。 我们来讨论处理大量图片的问题。 解决这个问题的第一种方法是在一台计算机上顺序处理图像。 第二种方法是在许多计算机上并行处理图像。
问题描述
问题是处理10000张照片。 每张照片质量都很高,目标是创建一个更小的版本。 有一个库libjpeg可以提供合适的程序。
libjpeg有用的程序:
djpeg - 将JPEG文件解压缩到图像文件
cjpeg - 将图像文件压缩为JPEG文件
脚本签名处理单张图片:
参数:图片的路径
结果:较小版本的图片
bash中的示例脚本:
脚本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
文件中找到。
概要
在前面的部分介绍了两种处理图片的方法。 第一种方法使用单台计算机进行处理。 第二种方法使用许多计算机进行处理。 两种解决方案的复杂性部署几乎相同。 随着第二种处理方式的处理速度会更快。
奥罗波项目
一般
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系统:
执行命令:
apt-get install oropo-system
在处理节点上安装Oropo Executor:
执行命令:
apt-get install oropo-executor
组态
中央节点配置:
将自己添加到oropo
组以获得足够的权限:
adduser `whoami` oropo
向Oropo系统添加处理节点地址:
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