hadoop namenode datanode hdfs工做機制

  你們都知道namenode是hadoop中的一個很重要的節點,由於他存在着跟datanode的交互跟客戶端的交互,存儲着dotanode中的元數據,因此就很想學習他們是如何溝通並能保證數據在任何狀況下都不會丟失那?node

  namenode的做用:服務器

  1.維護元數據信息。oop

  2.維護hdfs的目錄樹。性能

  3.相應客戶端的請求。學習

  咱們先來看一下namenode大體的工做流程blog

   能夠看到namenode這邊裏面有三個存儲單位,edits文件,edits.new 文件 ,fsimage文件,還有內存。內存

  edits文件默認爲64Mhadoop

  1.首先當edits文件64M存滿時,namenode就會通知secondNode進行checkpoint操做,告訴他個人edits文件滿了。工作流

  2.secondNode就會回覆你,文件滿了就不要往edits文件寫數據了唄,你在新建一個editsNew文件先往那裏面寫,你把fsimage跟edits文件給我吧。it

  3.namenode聽到了secondNode的話後,哦了一聲,那給你吧。second Node就去下載過來。

  4.而後在secondNode裏面來對兩個文件進行合併成一個新的文件fsimage.chkpoint.

  5.secondNode就告訴namenode這兩個合併好了給你吧,namenode緊忙點頭把合併好的文件拿了過來,當寶貝是的鎖了起來。

  6.namenode一看這個edits文件沒用了啊,因而就給刪除了,開始用edits.new文件並重命名爲edits文件。

  這就是一個namenode的工做機制,在這樣的狀況下,仍是出現什麼問題都能正常的跑,而且在不耽誤使用的狀況下。

  可是若是是namenode當機了,那怎麼辦,至關與整個hadoop也就崩了。這個也就用到了hadoop的新機制HA,在這裏不詳細講解,這個問題會留到HA那篇文章上寫。

  

 

 

 

  datanode那就沒什麼好說的了,就是一個存儲 blk 塊的服務器

  而後咱們在看一下hdfs的整個工做機制就能看明白了。

  

  1.首先client會訪問namenode看一下有沒有這個文件,而後在告訴client有仍是沒有。

  2.我接收到信息他說沒有,那沒有的話我可就要給你扔東西了,因而我把文件就往dataNode上面扔。

  3.這個時候dataNode默認大寫是128M,也就是說,你有一個300M的文件他會給你分紅兩份,按照128M去分,分別放到不一樣的dataNode中。

  這樣就能夠了,但是想一個問題,萬一我有一臺dataNode當機了,也就至關於裏面的數據我取不出來了,而dataNode是把文件分紅了塊,若是當機 了也就至關於我一大部分數據就毀了,因此怎麼辦那,嘿嘿,咱們繼續

  4.dataNode會對這個文件進行備份,而後在分別放到不一樣的dataNode上面,而不是客戶端數據傳過來時就進行備份,這樣多消耗性能啊。

 

 

  好了,這就結束了,我也是個小學徒,若是有錯誤還請你們指教。

相關文章
相關標籤/搜索