告訴你Hadoop是什么
Hadoop是什么?Hadoop是一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),是Appach的一個(gè)用java語(yǔ)言實(shí)現(xiàn)開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算.
Hadoop框架中最核心設(shè)計(jì)就是:HDFS和MapReduce.HDFS提供了海量數(shù)據(jù)的存儲(chǔ),MapReduce提供了對(duì)數(shù)據(jù)的計(jì)算.
數(shù)據(jù)在Hadoop中處理的流程可以簡(jiǎn)單的按照下圖來(lái)理解:數(shù)據(jù)通過(guò)Haddop的集群處理后得到結(jié)果.
HDFS:Hadoop Distributed File System,Hadoop的分布式文件系統(tǒng).
大文件被分成默認(rèn)64M一塊的數(shù)據(jù)塊分布存儲(chǔ)在集群機(jī)器中.
如下圖中的文件 data1被分成3塊,這3塊以冗余鏡像的方式分布在不同的機(jī)器中.
MapReduce:Hadoop為每一個(gè)input split創(chuàng)建一個(gè)task調(diào)用Map計(jì)算,在此task中依次處理此split中的一個(gè)個(gè)記錄(record),map會(huì)將結(jié)果以key--value的形式輸出,hadoop負(fù)責(zé)按key值將map的輸出整理后作為Reduce的輸入,Reduce Task的輸出為整個(gè)job的輸出,保存在HDFS上.
Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker組成.
如下圖所示:
NameNode中記錄了文件是如何被拆分成block以及這些block都存儲(chǔ)到了那些DateNode節(jié)點(diǎn).
NameNode同時(shí)保存了文件系統(tǒng)運(yùn)行的狀態(tài)信息.
DataNode中存儲(chǔ)的是被拆分的blocks.
Secondary NameNode幫助NameNode收集文件系統(tǒng)運(yùn)行的狀態(tài)信息.
JobTracker當(dāng)有任務(wù)提交到Hadoop集群的時(shí)候負(fù)責(zé)Job的運(yùn)行,負(fù)責(zé)調(diào)度多個(gè)TaskTracker.
TaskTracker負(fù)責(zé)某一個(gè)map或者reduce任務(wù).