hadoop主節點(NameNode)備份策略以及恢復方法


link:http://jiajun.iteye.com/blog/809125

一、dits和fsimage 

首先要提到兩個文件edits和fsimage,下面來說說他們是做什么的。

  • 集群中的名稱節點(NameNode)會把文件系統的變化以追加保存到日志文件edits中。
  • 當名稱節點(NameNode)啟動時,會從鏡像文件 fsimage 中讀取HDFS的狀態,並且把edits文件中記錄的操作應用到fsimage,也就是合並到fsimage中去。合並后更新fsimage的HDFS狀態,創建一個新的edits文件來記錄文件系統的變化

那么問題來了,只有在名稱節點(NameNode)啟動的時候才會合並fsimage和edits,那么久而久之edits文件會越來越大,特別是大型繁忙的HDFS集群。這種情況下,由於某種原因你要重啟名稱節點(NameNode),那么會花費很長的時間去合並fsimge和edits,然后HDFS才能運行。


二、Secondary NameNode 

目前使用的版本hadoop-0.20.2可以使用Secondary NameNode來解決上面的問題。Secondary NameNode定期合並fsimage和edits日志,把edits日志文件大小控制在一個限度下。因為內存需求和NameNode差不多(On the same order),所以Sencondary NameNode通常要運行在另外個機器上。

secondary NameNode配置在conf/masters文件,啟動命令:bin/start-dfs.sh(如果你使用不建議的start-all.sh也是會啟動的)。


三、什么時候checkpiont 

secondary NameNode 什么時候執行checkpoint來合並fsimage和eidts。呢?有兩個配置參數控制:

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

secondary NameNode 保存最后一次checkpoint的結果,存儲結構和主節點(NameNode)的一樣,所以主節點(NameNode)可以隨時來讀取。


如果你沒有啟動secondary NameNode 那么可以試試 bin/hadoop secondarynamenode -checkpoint 甚至 bin/hadoop secondarynamenode -checkpoint force. 看看生成的文件。

 

checkpoint可以解決重啟NameNode時間過長的弊端。另外還有偏方:


四、Import Checkpoint(恢復數據) 

如果主節點掛掉了,硬盤數據需要時間恢復或者不能恢復了,現在又想立刻恢復HDFS,這個時候就可以import checkpoint。步驟如下:

  • 拿一台和原來機器一樣的機器,包括配置和文件,一般來說最快的是拿你節點機器中的一台,立馬能用(部分配置要改成NameNode的配置)
  • 創建一個空的文件夾,該文件夾就是配置文件中dfs.name.dir所指向的文件夾。
  • 拷貝你的secondary NameNode checkpoint出來的文件,到某個文件夾,該文件夾為fs.checkpoint.dir指向的文件夾
  • 執行命令bin/hadoop namenode -importCheckpoint

這樣NameNode會讀取checkpoint文件,保存到dfs.name.dir。但是如果你的dfs.name.dir包含合法的fsimage,是會執行失敗的。因為NameNode會檢查fs.checkpoint.dir目錄下鏡像的一致性,但是不會去改動它。 

值得推薦的是,你要注意備份你的dfs.name.dir和 ${fs.checkpoint.dir}/dfs/namesecondary。


五、Checkpoint Node 和 Backup Node 


在后續版本中hadoop-0.21.0,還提供了另外的方法來做checkpoint:Checkpoint Node 和 Backup Node。則兩種方式要比secondary NameNode好很多。所以 The Secondary NameNode has been deprecated. Instead, consider using the Checkpoint Node or Backup Node.

Checkpoint Node像是secondary NameNode的改進替代版,Backup Node提供更大的便利,這里就不再介紹了。

 

切換namenode之后發現 進入的安全模式如下

$ hadoop dfsadmin -report
Safe mode is ON

 

解決方案有兩種

1)執行命令:bin/hadoop dfsadmin -safemode leave
dfsadmin -safemode value 參數value的說明如下:
enter - 進入安全模式
leave - 強制NameNode離開安全模式
get -  返回安全模式是否開啟的信息
wait - 等待安全模式結束。
2)bin/hadoop fsck /
 
第一種方法,需要每次都執行一遍,很糾結~
第二種方法,如果數據多,那執行起來會很慢,沒辦法,慢慢等吧。
 

[hadoop@vm×× name]$ hadoop fsck /
FSCK started by hadoop (auth:SIMPLE) from /×.×.×.× for path / at Thu Apr 16 15:31:10 CST 2015
..Status: HEALTHY
 Total size: 109836279 B
 Total dirs: 10
 Total files: 2
 Total blocks (validated): 2 (avg. block size 54918139 B)
 Minimally replicated blocks: 2 (100.0 %)
 Over-replicated blocks: 0 (0.0 %)
 Under-replicated blocks: 0 (0.0 %)
 Mis-replicated blocks:  0 (0.0 %)
 Default replication factor: 1
 Average block replication: 1.0
 Corrupt blocks:  0
 Missing replicas:  0 (0.0 %)
 Number of data-nodes:  4
 Number of racks:  1
FSCK ended at Thu Apr 16 15:31:10 CST 2015 in 4 milliseconds


The filesystem under path '/' is HEALTHY

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM