Hadoop學習01-hdfs概念

hadoop解決什麼問題
1.海量數據如何存儲(hdfs)
2.海量數據如何計算(mapreduce)node

1.HDFS

兩個核心 namenode與datanode
namenode安全

1.管理各個datanode
2.管理文件信息,文件名、文件多大、文件被切塊、存貯位置信息,即管理元數據信息。
3.基於RPC心跳機制控制集羣中各個節點(datanode)的狀態。
4.namenode存在單點故障問題,能夠啓用一個備用namenode用來保證元數據信息安全。
5.datanode掛掉後,數據丟失,所以須要控制datanode 的備份,默認3份,本機一份。

datanode:存儲數據的節點,數據存放具備備份。網絡

1.保存具體的block數據
2.負責數據的讀寫操做和複製操做
3.DataNode啓動會想NameNode報告當前存儲的block信息,
4.DataNode之間會進行通訊(RPC),保證數據的冗餘性

SecondaryNameNode不是熱備,它的職責是合併NameNode 的edit log,到 fsimage這個文件中。
tip:hdfs不適合存儲海量小文件 app

緣由:20k放在128M的block裏,他只佔用了20K,可是須要一個裝128M的袋子裝,這個袋子不能再裝其餘東西了。假設我有1000w * 1Kb,則namenode須要這麼多元數據信息,致使NameNode 癱瘓。

image.png
hdfs是磁盤,也就是涉及兩個問題:寫與讀。
讀流程:
image.png
寫流程:
image.png框架

2.Mapreduce

解決海量數據的計算問題,多機器協做計算。
簡單的wordcount怎麼作?
image.png函數

map階段:數據處理,輸出<key,value>,發到對應的reduce裏,每一個block能夠起一個map進程
image.pngoop

reduce階段:不一樣map按照某種規則(哈希)發到這個reduce去處理
map輸出的同一個key必定在一個reduce裏,不一樣key可能在同一個reduce,也可能不一樣reduce,跟你reduce數量有關。
image.pngspa

map到reduce的過程成爲shuffle過程,舉個數錢的例子
mapper將相同的key發到指定的reduce中。

combiner3d

Combiner在map階段進行一次reduce,減小reduce端的壓力

Mapreduce中的Combiner就是爲了不map任務和reduce任務之間的數據傳輸而設置的,Hadoop容許用戶針對map task的輸出指定一個合併函數。即爲了減小傳輸到Reduce中的數據量。它主要是爲了削減Mapper的輸出從而減小網絡帶寬和Reducer之上的負載。特別值得注意的一點,一個combiner只是處理一個結點中的的輸出,而不能享受像reduce同樣的輸入(通過了shuffle階段的數據),這點很是關鍵。code

hadoop的核心是mapreduce框架,shuffle又是mapreduce的核心!!!

image.png

相關文章
相關標籤/搜索