并行处理库corunner项目介绍
试想,如果有一堆页面,存储在不同的机器上,现在有一个搜索任务,需要根据一个查询条件找到相关的页面,这时候你会怎么做呢?
有几种做法,第一种是把页面拷贝到本地,在本地进行查找,但是页面比较多,拷贝就需要花费大量的时间。第二种,把查找的程序拷贝到各个机器,然后依次查找。这种做法具体又有很多种方式,如果你在linux上,比较擅长写脚本,你可能会用一个for循环,依次拷贝文件到远程的机器并运行查找的程序,或者你也有可能在for循环的内部,让你的任务运行在后台,以实现并行。但是问题来了,如果你需要操作的机器比较多,这些任务可能就占用了大量本地的资源,而且你没办法查看到远程执行的状态。第三种,使用hadoop,但是为了这样一个查找任务,还要部署一个文件系统,而且还要实现一些map-recude接口,太复杂了吧。
正是在这种情况下,corunner应运而生。corunner是一个在linux平台(未来也可能扩展到windows平台)上的并行执行框架。它可以执行任何程序,包括系统已有的命令,而且可以实时监控系统各个机器执行的状态。对上面的例子,假设有一个脚本search.sh可以根据关键字来搜索相应的页面,我们只需要执行下面的语句:
corunner-run -n 192.168.100.2..200,192.168.101.2..200 -f search.sh -r /tmp/corunner /tmp/corunner/search.sh key1
程序会自动被分发到100网段和101网段的机器上并执行。在执行完之后,结果会自动生成在/tmp/corunner/output下。如果要取回所有结果,可以运行下面的程序:
corunner-cp -n 192.168.100.2..200,192.168.101.2..200 -i -s /tmp/corunner/ouput -d /tmp/corunner/all --divide如果您对程序感兴趣,快来试试吧!关于corunner的详情,可以查看corunner的项目主页: http://sourceforge.net/projects/corunner/。如果您对项目的开发感兴趣,非常欢迎能够加入到项目中来。对于最新的版本,可以通过pip搜索,或者直接访问https://pypi.python.org/pypi/corunner。