在多臺Ubuntu上使用Oropo處理海量圖片
如果我們使用兩臺,三臺甚至更多的電腦并行處理這些圖片數據,那將會節約很多的時間。既然能節約大量的時間,那就讓我們用多臺電腦在Debian/Ubuntu上一起處理吧。Ubuntu建基于Debian發行版和GNOME桌面環境,與Debian的不同在于它每6個月會發布一個新版本。你是否認為讓多臺電腦協同工作需要繁雜的系統配置?在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控制集群進行并行運算處理了,怎么樣,簡單吧!
總結:
希望本文介紹的在多臺Ubuntu上使用Oropo處理海量圖片的方法能夠對讀者有所幫助,更多有關linux系統的知識還有待于讀者去探索和學習。