2NN主要操作:大致流程
a.将NN机器对应磁盘上的fsimage 和 Edits文件拉取到2NN的机器中
b.在2NN的机器中将fsimage + Edits都读取到内存中进行合并,然后生成新的fsimage
在合并时,edits会重新生成一个新的,用来记录在合并时的操作
c.再推送到NN机器中的磁盘上,NN中旧的fsimage会保留,新的fsimage对应的是正在使用
checkpoint时间设置:(触发条件)
a.2NN每隔1小时就发送请求给NN是否需要进行checkpoint
[hdfs-default.xml] --具体设置
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
b.Edites文件记录操作数达到100万,进行checkpoint操作
--2nn并不知道客户端操作了多少次nn,所以设置1分钟询问nn一次
【hdfs-site.xml】添加如下配置:
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60</value>
<description> 1分钟检查一次操作次数</description>
</property >
NN故障处理
方式一:将secondaryNameNode中的数据cp到NameNode存储数据的目录
--NN存储的目录(/opt/module/hadoop-3.1.3/data/name/current)
具体操作演示:
1、杀掉NameNode进程
jps 查看NN运行的进程号
kill -9 NN进程号
2、删除name下所有内容
rm -rf /opt/module/hadoop-3.1.3/data/name/*
3、拷贝2NN服务器节点name下的所有内容到NN中的name目录下
scp -r atguigu@swk5:/opt/module/hadoop-3.1.3/data/namesecondary/* ./name/
方式二:使用-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-3.1.3/data/name</value>
</property>
2、kill -9 NameNode进程
3、删除NameNode存储的数据(/opt/module/hadoop-3.1.3/data/name)
4、如果2NN不和NN在一个主机节点上,需要将2NN存储数据的目录拷贝到NN存储数据的平级目录,并删除in_use.lock文件
scp -r atguigu@swk5:/opt/module/hadoop-3.1.3/data/namesecondary ./
rm -rf in_use.lock
pwd ---> /opt/module/hadoop-3.1.3/data
5、导入检查点数据(等待一会ctrl+c结束掉)
bin/hdfs namenode -importCheckpoint
6、启动NameNode
hdfs --daemon start namenode