並發編程框架之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誕生並贏得了不少開發人員的喜歡。比起現實中有些開發人員不關注用戶,只關注高深代碼,這層次高太多了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM