一、NameNode 和 Secondary NameNode工作机制
工作流程图
二、CheckPoint 时间设置

虽然画的很复杂,但是我还是觉得尚硅谷讲的很清晰。感兴趣的可以参考上面大佬的博客。
三、NameNode故障处理
3.1方法一
将SecondaryNameNode中数据拷贝到NameNode存储数据的目录
- kill -9 NameNode对应的进程
- 删除NameNode存储数据
rm -rf /opt/module/hadoop-2.8.3/data/tmp/dfs/name/ - 拷贝SecondaryNameNode中数据到原NameNode存储数据目录
scp -r hadoop@hadoop-102:/opt/module/hadoop-2.8.3/data/tmp/dfs/namesecondary/* ./name - 重新启动NameNode
3.2方法二
使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中
1、修改hdfs-site.xml
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>120</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>
</property>
2、kill -9 namenode进程
3、删除NameNode存储的数据
rm -rf /opt/module/hadoop-2.8.3/data/tmp/dfs/name/
4、如果SecondaryNameNode不和NameNode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_use.lock文件
在dfs目录下执行
scp -r hadoop@hadoop-102:/opt/module/hadoop-2.8.3/data/tmp/dfs/namesecondary ./
进入namesecondary目录,删除in_use.lock文件
cd namesecondary
rm -rf in_use.lock
5、导入检查点数据(等待一会ctrl+c结束掉)
hdfs namenode -importCheckpoint
6、启动namenode
hadoop-daemon.sh start namenode
四、集群安全模式
4.1概述
NameNode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时,NameNode开始监听DataNode请求。但是此刻,NameNode运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。
系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。在系统的正常操作期间,NameNode会在内存中保留所有块位置的映射信息。在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到足够多的块位置信息之后,即可高效运行文件系统。
如果满足“最小副本条件”,NameNode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以NameNode不会进入安全模式。
4.2基本语法
集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
- bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
- bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
- bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
- bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态,监控安全模式)