mapreducemapreduce入門


備註

本節概述了mapreduce是什麼,以及開發人員為什麼要使用它。

它還應該提到mapreduce中的任何大型主題,並鏈接到相關主題。由於mapreduce的文檔是新的,您可能需要創建這些相關主題的初始版本。

安裝或設置

Mapreduce是Hadoop的一部分。因此,當Apache Hadoop (或任何Hadoop發行版安裝)時,會自動安裝MR。

MapReduce是HDFS(Hadoop分佈式文件系統)上的數據處理框架。 MR作業可能使用Java,python,Scala,R等編寫。

mapreduce做什麼以及如何做?

Mapreduce是一種編程模型,用於處理(非常)大量數據。

傳統的“HPC”(高性能計算)通過創建一組高度連接的計算機(使用諸如極快的網絡,快速訪問共享存儲,共享內存等)來處理計算問題,從而加快了對相對大量數據的大量計算。通常需要計算才能訪問彼此的數據。一個典型的例子是天氣預報。

另一方面,Mapreduce擅長處理大量數據的相對較小的獨立計算。為了實現這一點,數據分佈在許多計算機上(由於數據量),並且所需的計算被分成可以獨立地對每個數據位進行的階段(“映射”階段)。然後收集這些獨立計算的結果,並進行第二部分計算以將所有這些單獨的結果組合成最終結果(“減少”階段)。


示例:計票

想像一下,你有很多的選票需要計算,並且每項投票都需要做一些工作(例如,從掃描的圖像中找出哪個框被勾選)。

在這種情況下,mapreduce實現將:

第1步:'傳播'

傳播圖像以通過可用計算機進行處理。

第2步:'地圖'

在每台計算機上,為每個圖像:

  • 將復製到此計算機的1個圖像作為輸入
  • 找出哪個方框被勾選了
  • 輸出投票的項目的編號(或代碼或名稱)

請注意,只要計算機獲得1張圖像,就可以開始工作。所有這些計算機都不需要進行交互來完成工作,因此不需要快速互連,共享內存或共享磁盤空間。

第3步:'聚集'

在1台計算機上收集所有這些輸出。

第4步:'減少'

計算每個數字(或代碼或名稱)的投票數。

這個非常基本的例子也強調瞭如何進一步優化。在這種情況下,減少步驟本身可以在每台計算機上清楚地完成,然後可以在中央計算機上完成最終的減少。這將減少運行reduce步驟的一台計算機上的工作量,並限制需要通過網絡傳輸的數據量。


示例:計數投票 - 優化(通過使用組合器)

第1步:'傳播'

與以前相同:傳播圖像以通過可用計算機進行處理。

第2步:'地圖'

與以前相同:在每台計算機上,對於每個圖像:

  • 將復製到此計算機的1個圖像作為輸入
  • 找出哪個方框被勾選了
  • 輸出投票的項目的編號(或代碼或名稱)

第3步:在當地“聚集”

在計算機上收集1台計算機的所有輸出。

第4步:在本地'減少'

計算本地結果中每個數字(或代碼或名稱)的投票數,並輸出這些計數。

第五步:全球'聚集'

在1台計算機上收集本地的所有輸出。

第6步:全球'減少'

總結每個數字(或代碼或名稱)的本地投票數。


請注意,在步驟3中, 沒有必要等待以下任何情況下的所有結果:

  • 如果這對於計算機本地資源(如存儲/內存)來說太多了
  • 如果計算機發生故障時重做工作的成本被認為是大的等待所有本地結果
  • 如果網絡現在可以自由傳輸中間結果

到目前為止,在本地計算機上生成的結果可以進行本地收集和本地縮減,這可以隨時進行。

局部減少步驟稱為組合器步驟。這是用於提高性能的可選步驟。