| 
 Hadoop是一個(gè)由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),它封裝了復(fù)雜的分布式底層細(xì)節(jié),使開發(fā)人員能夠低門檻地開發(fā)分布式程序,充分利用集群的威力進(jìn)行高速運(yùn)算和存儲。 Hadoop是一個(gè)針對于大數(shù)據(jù)的存取、計(jì)算、加工、分析,由多個(gè)工具構(gòu)成的解決方案。二、為了解決什么問題 任何新技術(shù)的提出,都是為了解決問題。那么,Hadoop是在什么樣的情況下應(yīng)運(yùn)而生的,它又解決了什么問題呢? 隨著互聯(lián)網(wǎng)數(shù)據(jù)量增多,數(shù)據(jù)產(chǎn)生速度增快,數(shù)據(jù)類型多樣性提高,之前的集中式的數(shù)據(jù)處理系統(tǒng)顯露出了很多問題。 
 Hadoop構(gòu)建了可以運(yùn)行在多個(gè)廉價(jià)小型機(jī)的分布式系統(tǒng)架構(gòu),以低成本的方案解決了上述問題,從而得到了行業(yè)中大量的應(yīng)用。三、工作原理1. 示意圖 Hadoop中的核心設(shè)計(jì)包括兩點(diǎn):HDFS和MapReduce。 圖中白色塊屬于HDFS,黑色塊屬于MapReduce。2. HDFS HDFS(Hadoop Distributed File System)是一個(gè)高度容錯性的分布式文件系統(tǒng),可以被廣泛的部署于廉價(jià)的PC上。它以流式訪問模式訪問應(yīng)用程序的數(shù)據(jù),這大大提高了整個(gè)系統(tǒng)的數(shù)據(jù)吞吐量,因而非常適合用于具有超大數(shù)據(jù)集的應(yīng)用程序中。 一個(gè)典型的HDFS集群包含一個(gè)NameNode節(jié)點(diǎn)和多個(gè)DataNode節(jié)點(diǎn),NameNode節(jié)點(diǎn)負(fù)責(zé)整個(gè)HDFS文件系統(tǒng)中的文件的元數(shù)據(jù)的保管和管理,集群中通常只有一臺機(jī)器上運(yùn)行NameNode實(shí)例,DataNode節(jié)點(diǎn)保存文件中的數(shù)據(jù),集群中的機(jī)器分別運(yùn)行一個(gè)DataNode實(shí)例。 在HDFS中,NameNode節(jié)點(diǎn)被稱為名稱節(jié)點(diǎn),DataNode節(jié)點(diǎn)被稱為數(shù)據(jù)節(jié)點(diǎn)。DataNode節(jié)點(diǎn)通過心跳機(jī)制與NameNode節(jié)點(diǎn)進(jìn)行定時(shí)的通信。 NameNode : 可以看作是分布式文件系統(tǒng)中的管理者,存儲文件系統(tǒng)的meta-data,主要負(fù)責(zé)管理文件系統(tǒng)的命名空間,集群配置信息,存儲塊的復(fù)制。 Secondary NameNode: 幫助 NameNode 收集文件系統(tǒng)運(yùn)行的狀態(tài)信息 。 DataNode : 是文件存儲的基本單元,它存儲文件塊在本地文件系統(tǒng)中,保存了文件塊的meta-data,同時(shí)周期性的發(fā)送所有存在的文件塊的報(bào)告給NameNode。3. MapReduce MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。Map(映射)和Reduce(化簡),采用分而治之思想,先把任務(wù)分發(fā)到集群多個(gè)節(jié)點(diǎn)上,并行計(jì)算,然后再把計(jì)算結(jié)果合并,從而得到最終計(jì)算結(jié)果。 舉個(gè)通俗的例子: 我們要數(shù)圖書館中的所有書,你數(shù)1號書架,我數(shù)2號書架,這就是“Map”。我們?nèi)嗽蕉啵瑪?shù)書就更快。 現(xiàn)在我們到一起,把所有人的統(tǒng)計(jì)數(shù)加在一起,這就是“Reduce”。 用戶提交任務(wù)給JobTracer,JobTracer把對應(yīng)的用戶程序中的Map操作和Reduce操作映射至TaskTracer節(jié)點(diǎn)中;輸入模塊負(fù)責(zé)把輸入數(shù)據(jù)分成小數(shù)據(jù)塊,然后把它們傳給Map節(jié)點(diǎn);Map節(jié)點(diǎn)得到每一個(gè)key/value對,處理后產(chǎn)生一個(gè)或多個(gè)key/value對,然后寫入文件;Reduce節(jié)點(diǎn)獲取臨時(shí)文件中的數(shù)據(jù),對帶有相同key的數(shù)據(jù)進(jìn)行迭代計(jì)算,然后把終結(jié)果寫入文件。 JobTracker: 當(dāng)有任務(wù)提交到 Hadoop 集群的時(shí)候負(fù)責(zé) Job 的運(yùn)行,負(fù)責(zé)調(diào)度多個(gè) TaskTracker 。 TaskTracker: 負(fù)責(zé)某一個(gè) map 或者 reduce 任務(wù) 。四、優(yōu)缺點(diǎn)1. 優(yōu)勢 
 HDFS不適合用在:要求低時(shí)間延遲數(shù)據(jù)訪問的應(yīng)用,存儲大量的小文件,多用戶寫入,任意修改文件。五、適用場景 搜索、日志處理、推薦系統(tǒng)、數(shù)據(jù)分析、視頻圖像分析、數(shù)據(jù)保存等。六、生態(tài) 
 | 
|  |