Hadoop基本原理之一 MapReduce

2022-07-14 22:48:27 字數 1055 閱讀 5841

1、為什麼需要hadoop

目前,一塊硬碟容量約為1tb,讀取速度約為100m/s,因此完成一塊硬碟的讀取需時約2.5小時(寫入時間更長)。若把資料放在同一硬碟上,且全部資料均需要同乙個程式進行處理,此程式的處理時間將主要浪費在i/o時間上。

在過去幾十年,硬碟的讀取速度並未明顯增長,而網路傳輸速度此飛速上公升。

因此,若把資料分散到多個硬碟上進行儲存(如分成100份儲存在100個硬碟上),則讀取資料所需時間大大減少,並將各節點處理好的結果通過網路進行傳輸。

但這將導致2個問題

(1)資料被分散到多個硬碟中,某個盤發生故障導致部分資料出錯的可能性大大增加,因此需要對資料進行複製備份*****=>> hdfs!!

(2)資料分散在多個盤,一般會在本地進行初步處理,,如何將處理結果進行合併**********==>>mapreduce!!!

2、基本節點

在hadoop中,主要有以下5類節點:

(1) jobtracker 

(2) tasktracker 

(3) namenode 

(4) datanode 

(5) secondarynamenode 

3、零碎理論

(1)hadoop將mapreduce的輸入分成固定大小的切片,稱為input split。大多數情況下,切片的大小與hdfs塊的大小相等(預設情況下是64m)。

(2)4、本地資料優先

hadoop傾向於在儲存資料的節點上進行map處理,這稱為data locality optimization。

(1)首先,hadoop傾向於將資料在本地節點進行資料,如圖中的a.

(2)若儲存資料的節點有其它task正在進行處理,則在本機架內尋找另乙個節點進行資料處理,如圖中b。

(3)若本機架內所有節點均有task正在進行處理,則在其它機架內尋找節點進行資料處理。

5、mapreduce的資料流向

(1)單reducer情況

(2)多reducer情況

6、combiner 

在map與reduce之間,可以增加combiner函式,對map產生的結果進行預處理。

Hadoop基本原理之一 MapReduce

1 為什麼需要hadoop 目前,一塊硬碟容量約為1tb,讀取速度約為100m s,因此完成一塊硬碟的讀取需時約2.5小時 寫入時間更長 若把資料放在同一硬碟上,且全部資料均需要同乙個程式進行處理,此程式的處理時間將主要浪費在i o時間上。在過去幾十年,硬碟的讀取速度並未明顯增長,而網路傳輸速度此飛...

Hadoop基本原理

hadoop是乙個用於海量資料統計分析的分布式計算框架,封裝了分布式計算中比較困難的程序間通訊 負載均衡,任務排程等模組,降低了學習門檻。在最簡單的程式實現中,僅僅需要重寫map和reduce方法,並實現任務提交邏輯。接下來,就讓我們一起推開hadoop的大門,走進大資料的神奇世界。hadoop目前...

Hadoop資料切片基本原理

資料切片問題 先給不懂得同學解釋一下概念 資料塊block 是hdfs物理資料塊,乙個大檔案丟到hdfs上,會被hdfs切分成指定大小的資料塊,即block 資料切片 資料切片是邏輯概念,只是程式在輸入資料的時候對資料進行標記,不會實際切分磁碟資料 切片1 假設檔案大小為300m,切片大小為100m...