为了演示SecondaryNameNode是如何恢复namenode的
第一步 当然是直接用法kill -9 NameNode进程号意外结束namenode进程
第二步. 进入namenode里面的/home/whzy/hadoopdata/dfs/name
这个目录 rm -rf name/* 删除name里面所有数据 表示namenode数据丢失
第三步 进入salve1主机(里面配置了secondarynamenode) 进入
ome/whzy/hadoopdata/dfs/namesecondary 这个目录 将其下的current目录 通过scp命令远程拷贝到master的name目录
第四步 启动master 里面的 namenode
hadoop-daemon.sh start namenode
启动单进程 jps之后正常启动
第五步 检测
进入 master:50070 显示正常
上传in_use.lock 这个文件到hdfs 里面的/whzyB102/in_use.lock
目录下 显示上传成功
自此 namenode正常 Hadoop集群正常
使用-importCheckpoint命令恢复namenode
先修改配置文件
vi hdfs-site.xml
将这些配置添加到文件末尾
意思是修改检查时间从之前的3600秒(一小时)到现在的1分钟
将namenode 这个name的目录修改成namenode的目录
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>60</value>
<description>The number of seconds between two periodic checkpoints.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/whzy/hadoopdata/dfs/name</value>
</property>
继续一次删除namenode 进程
kill -9 31291 删除namenode进程
rm -rf name/* 删除NameNode存储的数据
如果 SecondaryNameNode 不和 NameNode 在一个主机节点上,需要将 SecondaryNameNode 存储数据的目录拷贝到 NameNode 存储数据的平级目录,并删 除 in_use.lock 文件
删除拷贝过来的in_use.lock文件
执行importCheckpoint命令
在执行命令的时候 重新建立一个连接 看到显示的namenode命令
其实就是命令进行时 生成的一个namenode守护进程命令结束之后namenode守护进程消失
等觉得命令运行的差不多了 将命令ctrl+C 结束掉
之后执行上传文件命令 文件上传成功namenode生效
总结
第一个方法在工作的时候用的比较多
其实更多的是用的HA 高可用 一个namenode进程挂掉之后直接换上第二个namnode进程就行