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...