
# 单NameNode长期故障时如何使用客户端手动checkpoint
#### 问题描述
在备NameNode长期异常的情况下，会积攒大量的editlog，此时如果重启HDFS或者主NameNode，主NameNode会读取大量的未合并的editlog，导致耗时启动较长，甚至启动失败。
#### 原因分析
备NameNode会周期性做合并editlog，生成fsimage文件的过程叫做checkpoint。备NameNode在新生成fsimage后，会将fsimage传递到主NameNode。
![](https://support.huaweicloud.com/trouble-mrs/public_sys-resources/note_3.0-zh-cn.png)
由于"备NameNode会周期性做合并editlog"，因此当备NameNode异常时，无法合并editlog，因此主NameNode在下次启动的时候，需要加载较多editlog，需要大量内存，并且耗时较长。
合并元数据的周期由以下参数确定，即如果NameNode运行30分钟或者HDFS操作100万次，均会执行checkpoint。
- dfs.namenode.checkpoint.period：checkpoint周期，默认1800s。
- dfs.namenode.checkpoint.txns：执行指定操作次数后执行checkpoint，默认1000000。
 
#### 处理步骤
在重启前，主动执行异常checkpoint合并主NameNode的元数据。
1. 停止业务。
2. 获取主NameNode的主机名。
3. 在客户端执行如下命令： 
   **source /opt/client/bigdata_env**
   **kinit** *组件用户*
   说明："/opt/client"需要改为实际客户端的安装路径。
   
   
4. 执行如下命令，使主NameNode进入安全模式，其中linux22替换为主NameNode的主机名。 
   **hdfs dfsadmin -fs** *主NameNode的主机名* **:25000 -safemode enter**
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281790.jpg "点击放大")
   
   
5. 执行如下命令，在主NameNode节点上合并editlog。 
   **hdfs dfsadmin -fs** *主NameNode的主机名* **:25000 -saveNamespace**
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281509.jpg "点击放大")
   
   
6. 执行如下命令，使主NameNode离开安全模式。 
   **hdfs dfsadmin -fs** *主NameNode的主机名* **:25000 -safemode leave**
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281850.jpg "点击放大")
   
   
7. 检查是否合并完成。 
   **cd /srv/BigData/namenode/current**
   检查先产生的fsimage是否是当前时间的，若是则表示已经合并完成
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281591.jpg "点击放大")
   
   
 
