1. 程式人生 > >hadoop namenode datanode hdfs工作機制

hadoop namenode datanode hdfs工作機制

node 節點 客戶 行合並 滿了 oop 重命名 技術 namenode

  大家都知道namenode是hadoop中的一個很重要的節點,因為他存在著跟datanode的交互跟客戶端的交互,存儲著dotanode中的元數據,所以就很想學習他們是如何溝通並能保證數據在任何情況下都不會丟失那?

  namenode的作用:

  1.維護元數據信息。

  2.維護hdfs的目錄樹。

  3.相應客戶端的請求。

  我們先來看一下namenode大致的工作流程技術分享圖片

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

  edits文件默認為64M

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

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

  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上面,而不是客戶端數據傳過來時就進行備份,這樣多消耗性能啊。

  好了,這就結束了,我也是個小學徒,如果有錯誤還請大家指教。

hadoop namenode datanode hdfs工作機制