hadoop核心------>HDFS原理

一 、hdfs體系架構

1.NameNode------>管理節點------>hdfs中老大

         (1)維護着整個文件系統的文件目錄樹;

         (2)維護元數據信息;

         (3)接收用戶的操作請求


2.DataNode------>提供真實文件數據的存儲服務------>hdfs中小弟

          將文件進行劃分並編號,切分成n個Block,HDFS默認Block大小是128MB


3.Secondary NameNode(僞分佈式,hadoop1.0用)------>保持文件系統最新的元數據------>hdfs中祕書

        合併NameNode的edit logs到fsimage文件中


二 、元數據存儲細節

            元數據存儲在內存中,舉個例子,現在要存儲一個文件a.log

        

       

       /test/a.log是一個要存儲的文件,要存儲3個副本(防止一個機器掛掉,文件丟失,所以需要副本),文件被切分成2塊,叫做

blk_1和blk_2,blk1存放在h0,h1,h2三臺機器上,blk2存放在h0,h2,h4三臺機器上


三 、NameNode工作原理


1. 基本概念


fsimage:元數據鏡像文件。存儲某一時段NameNode內存元數據信息。
edits:操作日誌文件。
fstime:保存最近一次checkpoint的時間


2.工作原理


  1.客戶端Client向NameNode發出要寫文件的請求,告訴NameNode我要開始寫文件了

  2.NameNode向edis log文件中記錄元數據操作日誌

  3.NameNode返回信息給客戶端Client,告訴客戶端可以寫文件操作了

  4.客戶端Client開始向DataNode中寫數據

  5.客戶端Client通知NameNode寫文件成功了

  6.NameNode將新產生的元數據信息更新到內存中,並向edis log中寫消息(即使機器斷電,信息仍會保存到edis log中)


四 、SecondNameNode原理

         Hadoop會維護一個fsimage文件,也就是namenode中metedata的鏡像,但是fsimage不會實時與namenode內存中的metedata保持一致,而是每隔一段時間通過合併edits文件來更新內容。Secondary namenode就是用來合併fsimage和edits文件來更新NameNode的metedata的。

      

1.NameNode通知SecondNameNode進行checkpoindt操作

2.SecondNameNode收到消息,停止向edis log中寫入信息

3.NameNode中生成一個新的edis log

4.原有的edis log 和fsimage下載到SecondNameNode中

5.SecondNameNode將原有的edis log 和fsimage進行合併,產生一塊新的fsimage

6.新產生的fsimage上傳給NameNode,取代舊的fsimage



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章