來源:北大青鳥總部 2022年12月13日 12:32
自從上次小編了解完大數(shù)據(jù)是啥,并且在招聘網(wǎng)站上看到大數(shù)據(jù)相關(guān)崗位的薪資之后,小編就開始了第18次奮發(fā)圖強(qiáng)努力學(xué)習(xí),雖然前17次奮發(fā)圖強(qiáng)均已失敗告終,但是這一次有薪資誘惑加持,相信小編一定能夠堅(jiān)持下去的。
本周小編學(xué)習(xí)了大數(shù)據(jù)的必修課Hadoop,今天給大家分享一些關(guān)于Hadoop的知識(shí)。
Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),是一個(gè)專門用于應(yīng)對(duì)海量數(shù)據(jù)的存儲(chǔ)和計(jì)算的東東。Hadoop這個(gè)英文單詞并不在英語字典中,它沒有具體的實(shí)際意義,為什么叫這個(gè)名字呢?是因?yàn)樽髡叩膬鹤佑幸粋€(gè)寶貝玩具大象名字叫Hadoop,所以他開發(fā)的這個(gè)系統(tǒng)就叫Hadoop。突然感覺到技術(shù)大牛的生活就是如此的枯燥且樸實(shí)。
其他的關(guān)于Hadoop的版本、歷程、花邊故事等等湊字?jǐn)?shù)行為就不多介紹了,廢話少說,直接上干貨。
Hadoop作為一個(gè)分布式系統(tǒng),它有三個(gè)最重要組成部分:HDFS、YARN、MapReduce。在介紹它們之前,首先我們?cè)賮韽?fù)習(xí)一遍分布式,分布式說白了就是有一堆機(jī)器組成的一個(gè)整體,它們之間通過網(wǎng)絡(luò)互相連接,每一個(gè)機(jī)器稱為一個(gè)節(jié)點(diǎn),所有的節(jié)點(diǎn)連在一起組成了分布式的系統(tǒng)。這種分布式結(jié)構(gòu)也稱為集群。
它是一個(gè)分布式文件系統(tǒng),它和我們windows上的文件系統(tǒng)很像,比如說在windows中,我們?yōu)榱瞬蛔屄槁榘l(fā)現(xiàn)我安裝了游戲,往往會(huì)將游戲軟件放到很深的文件路徑下,并且文件名也是諸如“xxx學(xué)習(xí)資料””學(xué)習(xí)資源”等等。它可能會(huì)有一個(gè)完整的路徑“D://學(xué)習(xí)資料/學(xué)習(xí)資源/英雄聯(lián)盟.exe”。實(shí)際上這就是windows上的文件系統(tǒng),它可以用來保存各種文件,并且可以通過路徑的方式來訪問這些文件。
同樣HDFS也是一個(gè)類似的文件系統(tǒng),但是它的不同點(diǎn)在于它是分布式的。在windows上我們都知道,某個(gè)路徑下的文件,它的物理形態(tài)也同樣的在這臺(tái)電腦的硬盤上。而HDFS上的文件,它肯定是在這個(gè)系統(tǒng)上,但是你要問它我這個(gè)文件到底在哪個(gè)機(jī)器上,它會(huì)告訴你,你的文件在物理上被切分成了多塊,分布在多臺(tái)機(jī)器上。
“那文件都被你切壞了,我還能用嗎!”,別擔(dān)心,絕對(duì)能用。這些機(jī)制在HDFS的底層中全部定義好了,使用HDFS可以直接把它當(dāng)做一個(gè)普通的文件系統(tǒng)就可以了,它也提供類似windows路徑的方式來訪問文件。我們?cè)谑褂玫倪^程大可不必關(guān)心底層內(nèi)容,如:文件到底被分了多少塊、副本文件在哪、使用的時(shí)候怎么合并等等這些問題。當(dāng)然如果你要去面試Hadoop相關(guān)崗位,還是要去了解底層實(shí)現(xiàn)原理的。
由于分布式的特性,HDFS的擴(kuò)展十分方便,只需增加機(jī)器,就可以給存儲(chǔ)系統(tǒng)擴(kuò)容。所以HDFS在機(jī)器夠的情況下,可以輕松儲(chǔ)存海量數(shù)據(jù)。
HDFS它是一個(gè)文件系統(tǒng),也就是所有的節(jié)點(diǎn)機(jī)器一起組成了這個(gè)整體的文件系統(tǒng),增加機(jī)器只會(huì)增加該系統(tǒng)的存儲(chǔ)容量和存儲(chǔ)節(jié)點(diǎn)。它總是保持一個(gè)整體的文件系統(tǒng)。
是一個(gè)分布式計(jì)算框架,它是一套專門應(yīng)對(duì)大數(shù)據(jù)的計(jì)算模式,它將一個(gè)處理大量數(shù)據(jù)的計(jì)算任務(wù)分解為Map和Reduce兩個(gè)階段來執(zhí)行,將計(jì)算任務(wù)分配給集群中的每個(gè)節(jié)點(diǎn),實(shí)現(xiàn)多節(jié)點(diǎn)并行計(jì)算。Map階段并行處理輸入數(shù)據(jù),Reduce階段對(duì)Map結(jié)果進(jìn)行匯總。
是一個(gè)通用的資源管理系統(tǒng),它其中的ResourceManager統(tǒng)一對(duì)集群中的資源進(jìn)行調(diào)度和管理,而NodeManager對(duì)集群中每一個(gè)節(jié)點(diǎn)的資源進(jìn)行調(diào)度和管理。也就是說ResourceManager是工程總設(shè)計(jì)師負(fù)責(zé)整個(gè)集群,NodeManager是包工頭只負(fù)責(zé)自己機(jī)器這一畝三分地。MapReduce計(jì)算過程中所需要的資源,通常就是通過YARN來進(jìn)行資源的調(diào)度和分配,當(dāng)然YARN之所以能坐上管理位置還是得益于它比較公平,它不會(huì)讓集群中一臺(tái)節(jié)點(diǎn)承擔(dān)大部分的任務(wù),而是經(jīng)常會(huì)將任務(wù)“平均”的分給各個(gè)節(jié)點(diǎn)。當(dāng)然資源調(diào)度的方式有很多,也因情況而定。
總結(jié)一下,總之Hadoop有三板斧來處理大數(shù)據(jù),使用HDFS輕松處理大數(shù)據(jù)的存儲(chǔ),使用MapReduce+YARN輕松處理大數(shù)據(jù)的計(jì)算。他們之間的關(guān)系可以簡(jiǎn)單的理解為:當(dāng)我有一個(gè)大數(shù)據(jù)處理的任務(wù),首先我將數(shù)據(jù)放在HDFS上,使用MapReduce這種計(jì)算模式來進(jìn)行數(shù)據(jù)處理,其中YARN調(diào)用集群中節(jié)點(diǎn)資源一起參與計(jì)算,最后得出結(jié)果。