hadoop 根據SecondaryNameNode恢復Namenode


1.修改conf/core-site.xml

增加

<property> 
<name>fs.checkpoint.period</name> 
<value>3600</value> 
<description>The number of seconds between two periodic checkpoints. </description> 
</property> 
<property> 
<name>fs.checkpoint.size</name> 
<value>67108864</value> 
<description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired. </description> 
</property> 

<property> 
<name>fs.checkpoint.dir</name> 
<value>/data/work/hdfs/namesecondary</value> 
<description>Determines where on the local filesystem the DFS secondary name node should store the temporary images to merge. If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy. </description> 
</property>

fs.checkpoint.period表示多長時間記錄一次hdfs的鏡像。默認是1小時。
fs.checkpoint.size表示一次記錄多大的size,默認64M

2.修改conf/hdfs-site.xml

增加

<property> 
<name>dfs.http.address</name> 
<value>master:50070</value> 
<description> The address and the base port where the dfs namenode web ui will listen on. If the port is 0 then the server will start on a free port. </description> 
</property>

0.0.0.0改為namenode的IP地址

3.重啟hadoop,然后檢查是否啟動是否成功

登錄secondarynamenode所在的機器,輸入jps查看secondarynamenode進程
進入secondarynamenode的目錄/data/work/hdfs/namesecondary
正確的結果:
如果沒有,請耐心等待,只有到了設置的checkpoint的時間或者大小,才會生成。

4.恢復

制造namenode宕機的情況
1) kill 掉namenode的進程

[root@master name]# jps 
11749 NameNode 
12339 Jps 
11905 JobTracker 
[root@master name]# kill 11749

 

2)刪除dfs.name.dir所指向的文件夾,這里是/data/work/hdfs/name

[root@master name]# rm -rf *

刪除name目錄下的所有內容,但是必須保證name這個目錄是存在的

 

3)從secondarynamenode遠程拷貝namesecondary文件到namenode的namesecondary

[root@master hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./

4)啟動namenode

[root@master /data]# hadoop namenode –importCheckpoint

正常啟動以后,屏幕上會顯示很多log,這個時候namenode就可以正常訪問了

5)檢查

使用hadoop fsck /user命令檢查文件Block的完整性

hadoop fsck /

6)停止namenode,使用crrl+C或者會話結束

7)刪除namesecondary目錄下的文件(保存干凈)

[root@master namesecondary]# rm -rf *


8)正式啟動namenode

[root@master bin]# ./hadoop-daemon.sh start namenode

恢復工作完成,檢查hdfs的數據

 

9)balancer

在使用start-balancer.sh時,
默認使用1M/S(1048576)的速度移動數據(so slowly...)
修改hdfs-site.xml配置,這里我們使用的是20m/S

<property> 
<name>dfs.balance.bandwidthPerSec</name> 
<value>20971520</value> 
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> 
</property>

然后結果是導致job運行變得不穩定,出現一些意外的長map單元,某些reduce時間處理變長(整個集群負載滿滿的情況下,外加20m/s的balance),據說淘寶的為10m/s,需要調整后實驗,看看情況如何。


hadoop balancer -threshold 5


免責聲明!

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



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