Hdfs 原始碼解析(2)

2021-06-17 00:06:25 字數 717 閱讀 5138

namenode啟動

namenode持久化了檔案和塊之間的對應關係,也就是在namenode資料目錄下的current/fsimage目錄,namenode啟動的時候,會將這個檔案載入到記憶體裡。塊和機器的對應關係,namenode並不持久化,也就是說,namenode在啟動的時候,並不知道檔案塊都在哪個datanode裡,所以,namenode在啟動後,會處於safemode狀態,等待datanode在傳送心跳的時候,報告自己的檔案塊列表,每個塊都有指定的最小副本數,當namenode檢測確認資料塊的副本數達到最小副本數的時候,認為這個塊是有效的。這個數目可以通過dfs.replication.min引數配置,預設是1,也就是至少要求有乙個副本。

namenode根據塊的有效率來決定是否退出安全模式,預設情況下,只有塊有效率達到99.9%以上時,才會退出安全模式。在啟動的時候,可以看到這樣的日誌:

the ratio ofreported blocks 1.0000 has reached the threshold 0.9990. safe mode will beturned off automatically in 30 seconds.

如果塊有效率達不到這個比率,則namenode將一直處於安全模式。這個比率可以通過配置項:dfs.safemode.threshold.pct進行調節,當資料塊達到要求後,namenode還留一段時間等待其他的datanode,可以通過dfs.safemode.extension來配置,預設30秒。

HDFS原始碼解析(1) 初識HDFS

hdfs 的特點 hdfs具有高容錯性的特點 fault tolterant 的特點,因為hadoop部署在 廉價的商用集群上,所以hdfs被設計成認為硬體是常態,具有高容錯性。其提供高吞吐量 high throughput 的特性,用來訪問應用程式的資料,適合有超大資料集 large data s...

Handler原始碼解析2

handler原始碼解析1 handler原始碼解析2 享元設計模式 記憶體復用,使用同一塊記憶體空間,bitmap,recycleview都有使用這種思想 在loop從訊息佇列中取出訊息並分發完後,並不會把訊息物件銷毀,而是通過msg.recycleunchecked 方法清空訊息放入訊息池進行 ...

Handler原始碼解析2

handler原始碼解析1 handler原始碼解析2 享元設計模式 記憶體復用,使用同一塊記憶體空間,bitmap,recycleview都有使用這種思想 在loop從訊息佇列中取出訊息並分發完後,並不會把訊息物件銷毀,而是通過msg.recycleunchecked 方法清空訊息放入訊息池進行 ...