Hadoop之HDFS基本概念

1.分佈式文件系統(Distributed File System)

   由來:數據量越來越多,在一個操作系統管轄的範圍存不下了,那麼就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,因此迫切需要一種系統來管理多臺機器上的文件,這就是分佈式文件管理系統 。

  定義:是一種允許文件通過網絡在多臺主機上分享的文件系統,可讓多機器上的多用戶分享文件和存儲空間。
  特點:通透性,讓實際上是通過網絡來訪問文件的動作,由程序與用戶看來,就像是訪問本地的磁盤一般。
              容錯,即使系統中有某些節點脫機,整體來說系統仍然可以持續運作而不會有數據損失。
  應用:分佈式文件管理系統很多,hdfs只是其中一種。適用於一次寫入多次查詢的情況,不支持併發寫情況,小文小文件不合適。

2.常見的分佈式文件系統

   常見的分佈式文件系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分佈式文件系統,而是應用級的分佈式文件存儲服務。

3.HDFS簡介

  › 源於Google論文GFS
  › 一種分佈式文件系統
  › 塊式存儲
  › 文件數據由一次性寫入或追加寫入,不可更改
  › 讀取時可以多個塊併發讀取
  › Master-Slave結構:一個NameNode + 若干DataNode組成

4.NameNode和DataNode

  

   NameNode:Master,只有一個節點;管理HDFS的名字空間(NameSpace),記錄文件怎樣分成數據塊Blocks,數據塊存儲在哪些節點上,整個分佈式文件系統的狀態
   DataNode:Slaves,可有多個節點,向NameNode發送心跳彙報block狀況,執行讀/寫操作,執行NameNode 的副本策略

 5.NameNode

     5.1 NameNode相關的文件包括

     > fsimage:元數據鏡像文件。存儲某一時段NameNode內存元數據信息。
     >edits:操作日誌文件。
     >fstime:保存最近一次checkpoint的時間
     注:以上這些文件是保存在linux的文件系統中

     5.2 NameNode的職責

     › 維護樹狀目錄結構(NameSpace)
     › 分配並記錄每個文件由哪些塊組成,以及每個塊的信息(大小、時間戳等)
     › 將HDFS的文件和目錄元數據存儲在一個叫fsimage的文件中,每次保存fsimage之後到下次保存之間的所有hdfs操作,將會記錄在editlog文件中
     › 被動接受DataNode的HeartBeat,記錄DataNode的Block信息
     › 通過HeartBeat的迴應向DataNode發送命令,本身不做重量級得工作
 6.SecondaryNameNode(僞分佈式)

      6.1 SecondaryNameNode初認識

     簡介:HA的一個解決方案。但不支持熱備。配置即可。Hadoop會維護一個fsimage文件,也就是namenode中metedata的鏡像,但是fsimage不會隨時與namenode內存中的metedata保持一致,而是每隔一段時間通過合併edits文件來更新內容。Secondary namenode就是用來合併fsimage和edits文件來更新NameNode的metedata的。   
     執行過程:從NameNode上下載元數據信息(fsimage,edits),然後把二者合併,生成新的fsimage,在本地保存,並將其推送到NameNode,替換舊的fsimage.

     注意:默認安  裝在NameNode節點上,但這樣不安全!

     6.2 SecondaryNameNode工作流程詳解

                                                          NameNode                                     SecondaryNameNode

                                           

    ①secondary namenode通知namenode切換edits文件
    ②secondary namenode從namenode獲得fsimage和edits(通過http)
    ③secondary namenode將fsimage載入內存,然後開始合併edits
    ④secondary namenode將新的fsimage發回給namenode
    ⑤namenode用新的fsimage替換舊的fsimage

    ?什麼時候checkpiont

    fs.checkpoint.period 指定兩次checkpoint的最大時間間隔,默認3600秒。
    fs.checkpoint.size    規定edits文件的最大值,一旦超過這個值則強制checkpoint,不管是否到達最大時間間隔。默認大小是64M。

 7.DataNode

     7.1 DataNode相關概念

     職責:提供真實文件數據的存儲服務。
     文件塊(block):最基本的存儲單位。對於文件內容而言,一個文件的長度大小是size,那麼從文件的0偏移開始,按照固定的大小,順序對文件進行劃分並編號,劃分好    的每一個塊稱一個Block。HDFS默認Block大小是128MB,以一個256MB文件,共有256/128=2個Block.     
    不同於普通文件系統的是,HDFS中,如果一個文件小於一個數據塊的大小,並不佔用整個數據塊存儲空間
    Replication。多複本。默認是三個。

     7.2 DataNode職責詳解

     › 維護數據塊:一個塊是一個本地文件
     › 處理數據的寫入、讀取、塊的複製、刪除操作等
     › 可以配置多個磁盤
     › 允許部分磁盤失敗
     › 根據剩餘空間比例選擇新block的存放位置
     › 定期向NameNode通報自身的block列表

8.HDFS架構圖

                                               

   





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