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