對HDFS和MapReduce的簡單理解

0開始之前,我覺得有必要結(jié)合所見所學(xué),說說大數(shù)據(jù)時代下的背景。

首先,對于數(shù)據(jù),我們一個是要保存它,二個是要處理它。怎么做呢?很簡單,用計算機(jī)唄。像一般我們熟知的家用電腦,什么號稱高性能的游戲本,對于大多數(shù)人處理生活中的數(shù)據(jù)已經(jīng)是綽綽有余了,為什么?因為這個數(shù)據(jù)量只是限于“家用”“個人”,說白了就是規(guī)模太小了。然而我們換個地方,我們來統(tǒng)計一下某一個高速路收費(fèi)站,某一天所有車流量的信息(車牌號,戶主等等),成百上千的數(shù)據(jù)?可以,那我們換成某個市的呢?我們再換成全國的呢?甚至把一天的換成一個星期,一個月的呢?那就恐怖了,根據(jù)網(wǎng)上信息,2016年7月份,全國高速公路,光是客車流量就已經(jīng)高達(dá)39073萬輛次,更別說加上你家的小轎車。好了,我們現(xiàn)在怎么存儲這些數(shù)據(jù)呢,用你家電腦的硬盤?恐怕會炸的,那換更個大的硬盤?500G?5000G?50000G?先別說你買不買得起,就說你有沒有這種硬盤可能都是問題。所以,靠原始思路,單純的擴(kuò)充存儲容量,無論從科技技術(shù)還是經(jīng)濟(jì)效益來講都是不可行的。我們的處理器,CPU,也是同理,打打小游戲估計可以,處理這么大的數(shù)據(jù)的話,還是得另想辦法了。

怎么辦?這就是我們Hadoop框架出現(xiàn)的意義了,為規(guī)模龐大的數(shù)據(jù)處理提供了可能性。我個人理解,它的核心思想就是化整為零,并行計算!也就是我們說的“分布式”。簡單說來,你500G的硬盤可以有,那我兩個250G的硬盤加起來還不是500G;你50000G的硬盤可能找不到,但是我能找到100個500G的硬盤啊。處理數(shù)據(jù)同理,計算 1*2+3*4 ,你可以一個人算,我也可以先找個人算1*2,再讓另外個算3*4,最后匯總加上,結(jié)果是不是相同呢?這就是簡單的對Hadoop框架的理解。


HDFS?

HDFS,是一種,工頭指揮一群工人干活的文件系統(tǒng),大多應(yīng)該都是是 主/從 (Master/Slave)架構(gòu),像我們配置的主節(jié)點的有NameNodes,從節(jié)點有DataNodes。我們工頭NameNodes負(fù)責(zé)調(diào)度,各個DataNodes就負(fù)責(zé)干活。另外還有一個叫做Secondary NameNode,都簡單說說我的理解。

1.NameNodes

顧名思義,名稱節(jié)點,它就相當(dāng)于整個班的花名冊,但是存的東西更多,包括整個文件系統(tǒng)的東西的信息、文件、結(jié)構(gòu)。比如a數(shù)據(jù)節(jié)點在這個地方,存了xxxx;b數(shù)據(jù)節(jié)點在那個地方,存了xxxx... ...現(xiàn)在要讓某數(shù)據(jù)節(jié)點干活,一個一個的找?太蠢了,直接翻花名冊唄。NameNodes還監(jiān)管著文件系統(tǒng)的常用操作,創(chuàng)建文件,重命名文件等。所以我們在使用文件系統(tǒng)時,幾乎都是先和這東西打交道的,這也是為什么它被放在主節(jié)點的原因。

2.DataNodes

顧名思義,數(shù)據(jù)節(jié)點,這就是我們真正存數(shù)據(jù)的地方,并且都有單獨(dú)的計算能力,可以理解為一臺簡化的電腦(顯示屏用不著,鍵盤鼠標(biāo)等都用不著)。我們一旦從NameNodes那兒知道了各個DataNodes的具體信息,我們就不再和NameNodes打交道,而直接向DataNodes操作,NameNodes再實時記錄這些變化。


扔一張網(wǎng)上經(jīng)常出現(xiàn)的圖

3.Secondary?NameNode

依舊顧名思義,第二個NameNode,第二個名稱節(jié)點,干啥的呢?假如你的NameNodes歇火了怎么辦?特別是搞金融、個人信息的,一不小心就是分分鐘幾千萬上下的損失,干著急嗎?這SecondaryNameNode就可以說是一種預(yù)防措施之一,它雖然并不像NameNodes一樣實時記錄各節(jié)點變化,但是它是NameNodes的一種快照,他會與NameNodes進(jìn)行通信,如果NameNodes發(fā)生問題,Secondary NameNode可以及時地作為備用NameNode使用。如果集群龐大,它會部署在一個單獨(dú)的服務(wù)器上(我們那三個節(jié)點就... ...算了算了)。

稍微說說Hadoop的“預(yù)防措施”:

數(shù)據(jù)丟失,機(jī)器故障這些誰都說不準(zhǔn),最好的做法只能未雨綢繆,怎么辦?數(shù)據(jù)備份,你想備份多少備份多少(HDFS默認(rèn)的是3份來著),如果實在倒霉得一次性數(shù)連備份都丟完了,那怎么辦?賠錢唄。具體是怎么備份的,可以去網(wǎng)上找找,我現(xiàn)在理解的還不夠。


MapReduce

MapReduce,這個就不能直譯了,它是一種編程模型 ,其實是由兩個部分,map和reduce組成。如剛才所說,HDFS有 和Master和Slave的區(qū)分(其實現(xiàn)在應(yīng)該是Master和Worker),其中干活的是Slave。而Slave有很多很多臺,更有具體的分工,也就是Map和Reduce。

1.Map

簡單說就是執(zhí)行我們規(guī)定的函數(shù)的地方。 再拓寬來講,首先Master把具體的job細(xì)分,扔給執(zhí)行Map的Slave,我們想要對數(shù)據(jù)進(jìn)行處理的函數(shù)模型就是在Map中。

2.Reduce

這個說白了就是統(tǒng)計結(jié)果的東西。Map干完活了,零零散散的結(jié)果你直接扔給Boss嗎?怕不是要一巴掌打死你。Map得到結(jié)果后扔給Reduce,Reduce匯總統(tǒng)計后,才會再得出最終的答案。

For Example:

全班60個人,其中班委8個人,我們來統(tǒng)計全班的平均身高:

1. ?老師讓8個班委中的6個人來算各個小組的平均身高,2個人來匯總

2. ?老師把60個人分成了6組,分別給6個班委統(tǒng)計,每個班委統(tǒng)計10個人

3. ?6個班委分別得出了每10個人的平均身高,再提交給2個負(fù)責(zé)統(tǒng)計的同學(xué)

4. ?2個統(tǒng)計的同學(xué)得出全班平均身高

最后,MapReduce就是一種分而治之的數(shù)據(jù)處理理念。但是實際情況肯定復(fù)雜得多,我所說的的只是簡單的核心流程。

如果有理解錯誤的地方,歡迎隨時在下方評論。( ̄︶ ̄)↗






。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 首先,我們在使用前先看看HDFS是什麼?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,240評論 0 2
  • 問題:1.job的本質(zhì)是什么? 2.任務(wù)的本質(zhì)是什么? 3.文件系統(tǒng)的Namespace由誰來管理,Namespa...
    時待吾閱讀 2,333評論 0 0
  • 先思考問題 我們處在一個大數(shù)據(jù)的時代已經(jīng)是不爭的事實,這主要表現(xiàn)在數(shù)據(jù)源多且大,如互聯(lián)網(wǎng)數(shù)據(jù),人們也認(rèn)識到數(shù)據(jù)里往...
    墻角兒的花閱讀 7,422評論 0 9
  • 效率到底是什么,我個人覺得,效率就是做事的態(tài)度,你什么態(tài)度去做事,你就有什么效率,比如高考,對于一般人來講他就是要...
    言和意順閱讀 299評論 0 0
  • 今天聽了一位女作家的分享。她不算有名,但是她剛開始講,就深深地抓住了我。 她的身世坎坷,讀到初中二年級就輟學(xué)了,之...
    檸檬悅兒閱讀 504評論 9 7