MapReduce:简单介绍
MapReduce是一種編程模型,使開(kāi)發(fā)人員可以專注于編寫處理數(shù)據(jù)的代碼,而不必?fù)?dān)心并行執(zhí)行的細(xì)節(jié)。
MapReduce需要將要處理的數(shù)據(jù)建模為鍵值對(duì)。 開(kāi)發(fā)人員編寫了map函數(shù)和reduce函數(shù)的代碼。
MapReduce運(yùn)行時(shí)為每個(gè)鍵/值對(duì)調(diào)用map函數(shù)。 映射功能將鍵值對(duì)作為輸入,并產(chǎn)生另一個(gè)鍵值對(duì)的輸出。
MapReduce運(yùn)行時(shí)通過(guò)鍵對(duì)映射函數(shù)的輸出進(jìn)行排序和分組。 然后,它調(diào)用將其傳遞給鍵的reduce函數(shù)以及與該鍵關(guān)聯(lián)的值的列表。 為每個(gè)鍵調(diào)用reduce函數(shù)。 reduce函數(shù)的輸出是鍵值對(duì)。 該值通常是聚合值或通過(guò)處理為輸入鍵傳遞的值列表而計(jì)算出的值。 對(duì)于由map函數(shù)生成的每個(gè)中間鍵,調(diào)用reduce函數(shù)。 reduce函數(shù)的輸出是必需的結(jié)果。
例如,假設(shè)您有大量的日志文件,其中包含某些事件(例如訪問(wèn)帳戶)的審核日志。 您需要找出過(guò)去10年中每個(gè)帳戶被訪問(wèn)了多少次。
假定日志文件中的每一行都是審核記錄。 我們正在逐行處理日志文件,map和reduce函數(shù)如下所示:
每個(gè)日志文件中的每一行都會(huì)調(diào)用map函數(shù)。 不相關(guān)的行將被忽略。 從相關(guān)行中解析出帳號(hào),并輸出一個(gè)值1。MapReduce運(yùn)行時(shí)按帳號(hào)對(duì)輸出進(jìn)行排序和分組。 為每個(gè)帳戶調(diào)用reduce函數(shù)。 reduce函數(shù)匯總每個(gè)帳戶的值,這是必需的結(jié)果。
MapReduce作業(yè)通常在計(jì)算機(jī)集群上執(zhí)行。 每臺(tái)機(jī)器執(zhí)行一個(gè)任務(wù),該任務(wù)可以是映射任務(wù),也可以是歸約任務(wù)。 每個(gè)任務(wù)都在處理數(shù)據(jù)的子集。 在上面的示例中,假設(shè)我們從一組大型輸入文件開(kāi)始。 MapReduce運(yùn)行時(shí)將輸入數(shù)據(jù)分為稱為分割或碎片的分區(qū)。 每個(gè)拆分或碎片均由計(jì)算機(jī)上的映射任務(wù)處理。 每個(gè)映射任務(wù)的輸出均按鍵排序和分區(qū)。 來(lái)自所有映射的輸出被合并以創(chuàng)建輸入到reduce任務(wù)的分區(qū)。
可以有多臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)都運(yùn)行簡(jiǎn)化任務(wù)。 每個(gè)reduce任務(wù)都有一個(gè)要處理的分區(qū)。 該分區(qū)可以具有多個(gè)鍵。 但是每個(gè)鍵的所有數(shù)據(jù)都在1個(gè)分區(qū)中。 換句話說(shuō),每個(gè)鍵只能處理1個(gè)縮減任務(wù)。
機(jī)器數(shù)量,映射任務(wù)數(shù)量,reduce任務(wù)數(shù)量以及其他幾項(xiàng)都是可配置的。
對(duì)于需要對(duì)大數(shù)據(jù)集進(jìn)行某些處理的問(wèn)題,MapReduce非常有用。 該算法可以分解為map和reduce函數(shù)。 MapReduce運(yùn)行時(shí)負(fù)責(zé)將處理分配到多臺(tái)計(jì)算機(jī)并匯總結(jié)果。
Apache Hadoop是mapreduce的開(kāi)源Java實(shí)現(xiàn)。 請(qǐng)繼續(xù)關(guān)注有關(guān)使用hadoop的有關(guān)mapreduce的未來(lái)博客/教程。
參考: 什么是MapReduce? 來(lái)自我們的JCG合作伙伴在“ Khangaonkar報(bào)告”中的報(bào)道 。
相關(guān)文章 :- Cajo,用Java完成分布式計(jì)算的最簡(jiǎn)單方法
- Hibernate映射集合性能問(wèn)題
- Java Code Geeks Andygene Web原型
- Servlet 3.0異步處理可將服務(wù)器吞吐量提高十倍
翻譯自: https://www.javacodegeeks.com/2011/05/mapreduce-soft-introduction.html
總結(jié)
以上是生活随笔為你收集整理的MapReduce:简单介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 3.35天赋(335天赋加点模拟器)
- 下一篇: 将CAPTCHA添加到您的GWT应用程序