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