mapreduce介绍_MapReduce:简单介绍
mapreduce介紹
MapReduce是Google流行的一種并行編程技術。 它用于處理大量數據。 僅通過將工作并行分配給多臺機器,就可以在合理的時間內完成這種處理。 每臺機器都處理一小部分數據。MapReduce是一種編程模型,使開發人員可以專注于編寫處理數據的代碼,而不必擔心并行執行的細節。
MapReduce需要將要處理的數據建模為鍵值對。 開發人員編寫了map函數和reduce函數的代碼。
MapReduce運行時為每個鍵值對調用map函數。 映射函數將鍵值對作為輸入,并產生另一個鍵值對的輸出。
MapReduce運行時按鍵對映射函數的輸出進行排序和分組。 然后,它將調用reduce函數,并為其傳遞鍵和與該鍵關聯的值的列表。 為每個鍵調用reduce函數。 reduce函數的輸出是鍵值對。 該值通常是一個集合或通過處理為輸入鍵傳入的值列表而計算出的值。 對于由map函數產生的每個中間鍵,調用reduce函數。 reduce函數的輸出是必需的結果。
例如,假設您有大量的日志文件,其中包含某些事件(例如訪問帳戶)的審核日志。 您需要找出過去10年中每個帳戶被訪問了多少次。
假設日志文件中的每一行都是審核記錄。 我們正在逐行處理日志文件,map和reduce函數如下所示:
每個日志文件中的每一行都會調用map函數。 不相關的行將被忽略。 從相關行中解析出帳號,并輸出一個值1。MapReduce運行時按帳號對輸出進行排序和分組。 為每個帳戶調用reduce函數。 reduce函數匯總每個帳戶的值,這是必需的結果。
MapReduce作業通常在計算機集群上執行。 每臺機器執行一個任務,該任務可以是映射任務,也可以是歸約任務。 每個任務都在處理數據的子集。 在上面的示例中,假設我們從一組大型輸入文件開始。 MapReduce運行時將輸入數據分為稱為分割或碎片的分區。 每個拆分或碎片均由計算機上的映射任務處理。 每個映射任務的輸出均按鍵排序和分區。 來自所有映射的輸出被合并以創建輸入到reduce任務的分區。
可以有多臺計算機,每臺計算機都運行簡化任務。 每個reduce任務都有一個要處理的分區。 該分區可以具有多個鍵。 但是每個鍵的所有數據都在1個分區中。 換句話說,每個鍵只能處理1個縮減任務。
機器的數量,映射任務的數量,reduce任務的數量以及其他幾項都是可配置的。
對于需要對大數據集進行某些處理的問題,MapReduce非常有用。 該算法可以分解為map和reduce函數。 MapReduce運行時負責將處理分配到多臺計算機并匯總結果。
Apache Hadoop是mapreduce的開源Java實現。 請繼續關注有關使用hadoop的有關mapreduce的未來博客/教程。
參考: 什么是MapReduce? 來自我們的JCG合作伙伴在“ Khangaonkar報告”中的報道 。
相關文章 :- Cajo,用Java完成分布式計算的最簡單方法
- Hibernate映射集合性能問題
- Java Code Geeks Andygene Web原型
- Servlet 3.0異步處理可將服務器吞吐量提高十倍
翻譯自: https://www.javacodegeeks.com/2011/05/mapreduce-soft-introduction.html
mapreduce介紹
總結
以上是生活随笔為你收集整理的mapreduce介绍_MapReduce:简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写下载服务器。 第二部分:标头:Las
- 下一篇: FPGA设计心得(5)Aurora 例子