posts - 431,  comments - 344,  trackbacks - 0

          MapReduce是Google提出的一個(gè)軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念"Map(映射)"和"Reduce(化簡)",和他們的主要思想,都是從函數(shù)式編程語言借來的,還有從矢量編程語言借來的特性。

          當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(化簡)函數(shù),用來保證所有映射的鍵值對中的每一個(gè)共享相同的鍵組。

          映射和化簡

          簡單說來,一個(gè)映射函數(shù)就是對一些獨(dú)立元素組成的概念上的列表(例如,一個(gè)測試成績的列表)的每一個(gè)元素進(jìn)行指定的操作(比如前面的例子里,有人發(fā)現(xiàn)所有學(xué)生的成績都被高估了一分,他可以定義一個(gè)“減一”的映射函數(shù),用來修正這個(gè)錯(cuò)誤。)。事實(shí)上,每個(gè)元素都是被獨(dú)立操作的,而原始列表沒有被更改,因?yàn)檫@里創(chuàng)建了一個(gè)新的列表來保存新的答案。這就是說,Map操作是可以高度并行的,這對高性能要求的應(yīng)用以及并行計(jì)算領(lǐng)域的需求非常有用。

          而化簡操作指的是對一個(gè)列表的元素進(jìn)行適當(dāng)?shù)暮喜ⅲɡ^續(xù)看前面的例子,如果有人想知道班級的平均分該怎么做?他可以定義一個(gè)化簡函數(shù),通過讓列表中的元素跟自己的相鄰的元素相加的方式把列表減半,如此遞歸運(yùn)算直到列表只剩下一個(gè)元素,然后用這個(gè)元素除以人數(shù),就得到了平均分)。雖然他不如映射函數(shù)那么并行,但是因?yàn)榛喛偸怯幸粋€(gè)簡單的答案,大規(guī)模的運(yùn)算相對獨(dú)立,所以化簡函數(shù)在高度并行環(huán)境下也很有用。

          分布和可靠性

          MapReduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)實(shí)現(xiàn)可靠性;每個(gè)節(jié)點(diǎn)會(huì)周期性的把完成的工作和狀態(tài)的更新報(bào)告回來。如果一個(gè)節(jié)點(diǎn)保持沉默超過一個(gè)預(yù)設(shè)的時(shí)間間隔,主節(jié)點(diǎn)(類同Google檔案系統(tǒng)中的主服務(wù)器)記錄下這個(gè)節(jié)點(diǎn)狀態(tài)為死亡,并把分配給這個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)到別的節(jié)點(diǎn)。每個(gè)操作使用命名文件的原子操作以確保不會(huì)發(fā)生并行線程間的沖突;當(dāng)文件被改名的時(shí)候,系統(tǒng)可能會(huì)把他們復(fù)制到任務(wù)名以外的另一個(gè)名字上去。(避免副作用)。

          化簡操作工作方式很類似,但是由于化簡操作在并行能力較差,主節(jié)點(diǎn)會(huì)盡量把化簡操作調(diào)度在一個(gè)節(jié)點(diǎn)上,或者離需要操作的數(shù)據(jù)盡可能近的節(jié)點(diǎn)上了;這個(gè)特性可以滿足Google的需求,因?yàn)樗麄冇凶銐虻膸挘麄兊膬?nèi)部網(wǎng)絡(luò)沒有那么多的機(jī)器。

          用途

          在Google,MapReduce用在非常廣泛的應(yīng)用程序中,包括“分布grep,分布排序,web連接圖反轉(zhuǎn),每臺機(jī)器的詞矢量,web訪問日志分析,反向索引構(gòu)建,文檔聚類,機(jī)器學(xué)習(xí),基于統(tǒng)計(jì)的機(jī)器翻譯……”值得注意的是,MapReduce實(shí)現(xiàn)以后,它被用來重新生成Google的整個(gè)索引,并取代老的ad hoc程序去更新索引。

          MapReduce會(huì)生成大量的臨時(shí)文件,為了提高效率,它利用Google檔案系統(tǒng)來管理和訪問這些文件。

          其他實(shí)現(xiàn)

          • Hadoop - Apache軟件基金會(huì)的開放源碼項(xiàng)目,提供與MapReduce檔案系統(tǒng)類似的功能。
          posted on 2009-11-18 09:00 周銳 閱讀(292) 評論(0)  編輯  收藏 所屬分類: 軟件工程
          主站蜘蛛池模板: 会同县| 辛集市| 卓资县| 万年县| 许昌县| 墨脱县| 视频| 含山县| 灌阳县| 修水县| 乐平市| 丰县| 乐业县| 灵台县| 全椒县| 浮山县| 东宁县| 夏河县| 藁城市| 河池市| 张家港市| 鄂伦春自治旗| 岳池县| 新巴尔虎左旗| 昌图县| 惠来县| 长海县| 常宁市| 遵化市| 芜湖县| 康定县| 图木舒克市| 灵寿县| 双鸭山市| 三台县| 峨边| 齐齐哈尔市| 富民县| 文山县| 巴中市| 应城市|