傳統MapReduce架構_傳統

來源:互聯網
上載者:User
傳統的MapReduce架構是google於2004年在論文:“MapReduce: Simplified Data Processing on Large Clusters”提出的,該架構把一些資料密集型應用的資料處理過程簡化抽象成map和reduce兩個階段,使用者在設計分布式程式時,只要實現map()和reduce()兩個函數,至於其它細節,例如資料分區,任務調度,機器容錯,機器間通訊等,都交由MapReduce架構處理。隨著技術的發展,在傳統MapReduce架構的基礎上,出現了一些針對特殊應用的MapReduce架構,主要有以下幾種:

(1)       支援迭代MapReduce的Twister和Haloop(參見我的博文:迭代式MapReduce架構介紹).

(2)       支援多階段流式計算的Sector/Sphere(參見我的博文:流式MapReduce實現Sector/Sphere ).

(3)       支援DAG(Directed Acyclic Graph)的Dryad和Cascading(參見文章:Dryad , Cascading 以及Cascading的首頁).

(4)        MapReduce與Database結合的產物:HadoopDB 和 greenplum.

本文主要講解當下較為出名的傳統MapReduce開源實現。現在有非常多的開源MapReduce架構實現, 最出名的莫過於Java實現版本Hadoop。 實際上,它屬於重量級的實現版本(代碼量大),要理解其細節或者對其進行改進需要很大工作量。 為了克服重量級實現存在的缺陷,一些輕量級的版本出現了,如erlang實現版本Disco,Python實現版本micemeat,bash版本bashreduce等。

本文主要介紹Disco,粗略講解micemeat和bashreduce。

傳統MapReduce實現之Disco

1、概述

Disco是一個輕量級的MapReduce架構實現,核心模組使用Erlang語言實現,外部介面為易於編程的Python。同Hadoop一樣,擁也有自己的Distributed File SystemDDFS,不過DDFS是與計算架構高度耦合的。 Disco由諾基亞研究中心開發,用於處理實際應用中的大規模資料。

2、Disco的總體設計架構

Disco由分布式儲存系統DDFS(Disco Distributed File System)和MapReduce架構組成,本節主要介紹Disco的總體設計架構,下面一節介紹DDFS。

Disco也是master/slave架構:

Disco master從client端接收作業,並將它們添加到作業隊列中,以便進行調度。

Client processes是一些python程式,它們使用函數disco.job()向master提交作業。

Worker supervision是由master啟動的,每個節點啟動一個,用於監控該節點上python worker的運行情況。

Python worker用於執行使用者提交的作業。

輸入檔案是通過http擷取的,但若要讀取的檔案在本地,直接從磁碟上擷取即可。為了能夠從個遠程節點上擷取資料,每個節點上進行一個httpd後台進程。

3、DDFS的架構

DDFS是嵌入到Disco中的,目前只有一個master節點(存在單點故障)。每個儲存節點由一組磁碟或者卷宗組成(vol0..volN),它們分別掛載在$DDFS_ROOT/vol0 … $DDFS_ROOT/volN。每個卷宗下面有兩個檔案,分別為tag 和 blob,分別用於儲存標記(tag,相當於key)和標記對應的值(value)。DDFS會監控每個節點上的磁碟使用方式,並每隔一段時間進行負載平衡。

4、分布式索引Discodex

Discodex是專門為Disco設計的分布式索引系統。

Discodex實際上是一個分布式key/value儲存系統。通過某一個key,可以檢索出與該key相關的所有value。Discodex對外提供了一些ReST API,使用者通過這些API檢索資料。

當我們使用Discodex時,實際上是運行了一個HTTP 伺服器,它把ReSTful url映射成Disco作業。        Discodex在DDFS上儲存key和value值,其中每個檔案都是分布式的,稱為index,chunks或者ichunks。

5、參考資料

(1)官方網址:http://discoproject.org/

(2)安裝方法:http://blog.csdn.net/socrates/archive/2009/05/26/4217641.aspx

傳統MapReduce實現之micemeat

1、介紹

micemeat是MapReduce的python實現,整個代碼由一個python檔案構成(<13KB),它僅依賴於python標準庫,非常容易部署,同時它還支援以下功能:

(1)       容錯:任何一個slave可以隨時加入或者離開叢集而不會影響其他slave。

(2)       安全:micemeat會對每一條串連進行授權驗證,防止未經授權的代碼被執行。

2、參考資料:

官方網址:http://remembersaurus.com/mincemeatpy/

傳統MapReduce實現之bashreduce

1、  介紹

Bashreduce採用bash指令碼語言編寫,整合了常用的shell命令,如sort, awk, ssh, netcat等。目前僅在ubuntu/debian系統上進行了測試。

2、  參考資料

(1)       https://github.com/erikfrey/bashreduce

另外,還有Perl實現RobotArmy和ruby實現skyner

參考資料:

(1)    RobotArmy官方首頁:http://bulletsweetp.github.com/robotarmy/

(2)    RobotArmy論文:RobotArmy: A Casual Framework for Massive Distributed Processing

(3)    Skynet官方首頁:http://skynet.rubyforge.org/

 

原創文章,轉載請註明: 轉載自董的部落格

本文連結地址: http://dongxicheng.org/mapreduce/traditional-mapreduce-framework/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.