分布式計(jì)算Hadoop簡介
Hadoop是什么:Hadoop是一個開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺,是Appach的一個用java語言實(shí)現(xiàn)開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對海量數(shù)據(jù)進(jìn)行分布式計(jì)算。
Hadoop框架中最核心設(shè)計(jì)就是:HDFS和MapReduce。HDFS提供了海量數(shù)據(jù)的存儲,MapReduce提供了對數(shù)據(jù)的計(jì)算。
數(shù)據(jù)在Hadoop中處理的流程可以簡單的按照下圖來理解:數(shù)據(jù)通過Haddop的集群處理后得到結(jié)果。

HDFS:Hadoop Distributed File System,Hadoop的分布式文件系統(tǒng)。
大文件被分成默認(rèn)64M一塊的數(shù)據(jù)塊分布存儲在集群機(jī)器中。
如下圖中的文件 data1被分成3塊,這3塊以冗余鏡像的方式分布在不同的機(jī)器中。

MapReduce:Hadoop為每一個input split創(chuàng)建一個task調(diào)用Map計(jì)算,在此task中依次處理此split中的一個個記錄(record),map會將結(jié)果以key--value的形式輸出,hadoop負(fù)責(zé)按key值將map的輸出整理后作為Reduce的輸入,Reduce Task的輸出為整個job的輸出,保存在HDFS上。

Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker組成。
如下圖所示:

NameNode中記錄了文件是如何被拆分成block以及這些block都存儲到了那些DateNode節(jié)點(diǎn)。
NameNode同時保存了文件系統(tǒng)運(yùn)行的狀態(tài)信息。
DataNode中存儲的是被拆分的blocks。
Secondary NameNode幫助NameNode收集文件系統(tǒng)運(yùn)行的狀態(tài)信息。
JobTracker當(dāng)有任務(wù)提交到Hadoop集群的時候負(fù)責(zé)Job的運(yùn)行,負(fù)責(zé)調(diào)度多個TaskTracker。
TaskTracker負(fù)責(zé)某一個map或者reduce任務(wù)。





















