并发编程框架之FlumeJava

基于map-shffle-reduce,google的一些开发人员也实现了另外一些好用的并行计算编程框架,FlumeJava就是其中的一种。

http://faculty.neu.edu.cn/cc/zhangyf/cloud-bigdata/papers/big%20data%20programming/FlumeJava-pldi-2010.pdf

从介绍来看,FlumeJava的出发点应该是map-reduce job不是那么容易写,并且如果一个任务需要很多的map-reduce过程结合就更麻烦了。而且当一连串的map-reduce需要运行的时候,如何优化也不是件容易的事情。

FlumeJava让并发编程更容易的设计基础是,将map-shuffle-combine-reduce作为meta元素融合进来,并且提供一些基本的运算函数,比如count,group,join,这使得一些常见的编程任务变得比较容易。

当用户有一连串的并发任务要一起运行的时候,FlumeJava还会尝试进行优化,采取的办法有经典的loop fusion优化,也有传统数据库使用的push down condition优化,优化的核心基础是减少文件IO,减少重复运行的任务,减少通信。

试验证明,FlumeJava的代码量比普通的map-reduce job少20%以上,并且执行效率也接近人工优化之后的map-reduce job。

整体上看,FlumeJava主要是工程问题,开发人员考虑的是如何更简单的进行并发编程,而不是简单的提出一种新模型、新概念,这个务实的精神是google一贯的风格。

让我感兴趣的是FlumeJava的开发人员之前曾经开发了另外一款并发编程框架,叫做LumberJack,实践证明,该工具很难用,于是FlumeJava诞生并赢得了不少开发人员的喜欢。比起现实中有些开发人员不关注用户,只关注高深代码,这层次高太多了。

posted on 2013-01-08 20:50  RaymondSQ  阅读(5713)  评论(0编辑  收藏  举报