日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传统MapReduce框架

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传统MapReduce框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳統的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一樣,擁也有自己的分布式文件系統DDFS,不過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/

總結

以上是生活随笔為你收集整理的传统MapReduce框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。