1. 程式人生 > >Hadoop-hdfs的設計理念,block,namenode,datanode啟動過程,心跳機制,安全模式

Hadoop-hdfs的設計理念,block,namenode,datanode啟動過程,心跳機制,安全模式

( hdfs的設計理念
    硬體故障是常態而非例外。HDFS例項可能包含數百或數千臺伺服器計算機,
        每臺計算機都儲存檔案系統資料的一部分。事實上,存在大量元件並且每個
        元件具有非平凡的故障概率意味著HDFS的某些元件始終不起作用。
        因此,檢測故障並從中快速自動恢復是HDFS的核心架構目標。
        
    在HDFS上執行的應用程式需要對其資料集進行流式訪問。
        它們不是通常在通用檔案系統上執行的通用應用程式。HDFS設計用於批處理而不是使用者的互動式使用。
        重點是資料訪問的高吞吐量而不是資料訪問的低延遲。
        POSIX強加了許多針對HDFS的應用程式不需要的硬性要求。
        交易幾個關鍵領域的POSIX語義以提高資料吞吐率。
    
    在HDFS上執行的應用程式具有大型資料集。HDFS中的典型檔案大小為千兆位元組到太位元組。
        因此,HDFS被調整為支援大檔案。它應該提供高聚合資料頻寬並擴充套件到單個叢集中的數百個節點。
        它應該在單個例項中支援數千萬個檔案。
    
    HDFS應用程式需要一個一次寫入多次讀取的檔案訪問模型。
        除了追加和截斷之外,無需更改建立,寫入和關閉的檔案。支援將內容附加到檔案末尾,
        但無法在任意點更新。該假設簡化了資料一致性問題並實現了高吞吐量資料訪問。
        MapReduce應用程式或Web爬蟲應用程式完全適合此模型。
    
    應用程式請求的計算如果在其操作的資料附近執行則更有效。
        當資料集的大小很大時尤其如此。這可以最大限度地減少網路擁塞並提高系統的整體吞吐量。
        假設通常更好的是將計算遷移到更靠近資料所在的位置,而不是將資料移動到執行應用程式的位置。
        HDFS為應用程式提供了介面,使其自身更靠近資料所在的位置。)
資料塊(block):儲存在hdfs中的最小單位。預設大小128M
    這麼大的原因:
        為了最小化定址開銷,一般定址時間為10ms,傳輸速率為100MB/s,為了定址時間佔傳輸時間的1%
namenode啟動過程
    載入fsimage
    載入edites
    進行檢查點儲存
    等待datanode彙報塊資訊
datanode啟動過程
    掃描本地塊的資訊
    彙報給namenode
心跳機制
    datanode每隔三秒彙報給namenode

檢查點(執行時主要由secondarynamenode完成)
    它從磁碟讀取FsImage和EditLog,將EditLog中的所有事務應用到FsImage的記憶體中表示,
    並將此新版本重新整理為磁碟上的新FsImage。然後它可以截斷舊的EditLog,
    因為它的事務已應用於永續性FsImage

配置執行檢查點的閥值(時間間隔)
    <property>
      <name>dfs.namenode.checkpoint.period</name>
      <value>3600</value>
      <description>The number of seconds between two periodic checkpoints.
      </description>
    </property>
    
    配置執行檢查點的閥值(操作次數)
    <property>
      <name>dfs.namenode.checkpoint.txns</name>
      <value>1000000</value>
      <description>The Secondary NameNode or CheckpointNode will create a checkpoint
      of the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardless
      of whether 'dfs.namenode.checkpoint.period' has expired.
      </description>
    </property>
    
    
    檢查是否達到閥值     
    <property>
      <name>dfs.namenode.checkpoint.check.period</name>
      <value>60</value>
      <description>The SecondaryNameNode and CheckpointNode will poll the NameNode
      every 'dfs.namenode.checkpoint.check.period' seconds to query the number
      of uncheckpointed transactions.
      </description>
    </property>
    
安全模式
    進入
        hdfs dfsadmin -safemode enter
    
    手動儲存名稱空間
        hdfs dfsadmin -saveNamespace
    
    離開
        hdfs dfsadmin -safemode leave