首页 > 编程语言 >NameNode Metadata备份和恢复最佳实践

NameNode Metadata备份和恢复最佳实践

时间:2022-10-04 14:03:01浏览次数:136  
标签:cdh01 nn disk1 备份 dfs NameNode root Metadata

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1.文档编写目的



对于未启用HA的NameNode集群,fsimage和edits将存储在活动的NameNode和SecondNameNode上,建议定期备份fsimage和edits。


对于启用HA的NameNode集群,由于fsimage和edits通常存储在两个NameNode服务器上,并且edits也会存储在Journal Quorum(通常为3个服务器),因此一般建议只关注定期备份fsimage。


本篇文章Fayson主要介绍如何备份NameNode Metadata数据以及恢复。


  • 本次Fayson的测试环境为

1.CM和CDH版本为5.15

2.Redhat7.4


2.NameNode Metadata备份



1.备份fsimage数据,(该操作适用HA和非HA的NameNode),使用如下命令进行备份:


[root@cdh01 disk1]# mkdir nn_metadata_back
[root@cdh01 disk1]# hdfs dfsadmin -fetchImage nn_metadata_back/
[root@cdh01 disk1]# ll nn_metadata_back

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_hdfs


注意:不要直接使用http://<nn_hosts>:50070/imagetransfer?getimage=1&txid=latest这是一个内部的API接口,如果接口改变需要做相应的修改,并且只能针对活动的NameNode使用。


2.备份edits数据(该操作适用非HA的NameNode),使用如下命令备份:


[root@cdh01 current]# sudo -u hdfs hdfs dfsadmin -rollEdits

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_服务器_02


注意:需要使用hdfs用户执行,该操作将结束当前edits日志并启动一个新的。


3.拷贝edits日志到备份目录(该操作适用非HA的NameNode),使用如下命令进行备份


在CM上找到NameNode的dfs.name.dir配置目录


NameNode Metadata备份和恢复最佳实践_服务器_03


将/data/disk1/dfs/nn/current目录下的edits_0*开头的文件拷贝至备份目录


[root@cdh01 disk1]# mkdir nn_metadata_back/edits
[root@cdh01 disk1]# cp /data/disk1/dfs/nn/current/edits_0* nn_metadata_back/edits/
[root@cdh01 disk1]#

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_数据_04


4.备份VERSION文件(该操作适用于HA和非HA的NameNode),这个文件不需要定期备份,因为它不会更改,但该文件非常重要,因为文件中包含了clusterID一级其它详细信息


[root@cdh01 disk1]# cp /data/disk1/dfs/nn/current/VERSION nn_metadata_back/
[root@cdh01 disk1]# ll nn_metadata_back/

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_服务器_05


3.NameNode Metadata恢复



在前面我们备份的NameNode Metadata数据,如果我们的NameNode服务器突然大宕机无法恢复,这个时候需要用一个新的服务器来还原NameNode服务,如下是常规的还原过程:


在Fayson的测试环境下,cdh01.fayson.com为NameNode节点,用来模拟设该节点故障,需要通过备份数据来恢复NameNode服务。


1.通过CM将新服务器添加到集群中(将之前故障节点从集群从删除,添加hostname和IP与故障节点一致的服务器到集群)


2.通过CM为新加的节点添加NameNode角色


3.检查NameNode的dfs.name.dir配置的目录在服务器上是否存在,如果不存在则需要手动的创建并确保目录属主为hdfs:hdfs,且父目录权限为700


[root@cdh01 ~]# mkdir -p /data/disk1/dfs/nn/
[root@cdh01 ~]# chown hdfs:hadoop /data/disk1/dfs/nn
[root@cdh01 ~]# chmod 700 /data/disk1/dfs/nn

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_hdfs_06


4.将VERSION和最后备份的fsimage文件复制到/data/disk1/dfs/nn/current目录下


[root@cdh01 dfs]# mkdir -p /data/disk1/dfs/nn/current
[root@cdh01 dfs]# cp /data/disk1/nn_metadata_back/VERSION /data/disk1/dfs/nn/current/
[root@cdh01 dfs]# cp /data/disk1/nn_metadata_back/fsimage_0000000000004483704 /data/disk1/dfs/nn/current/
[root@cdh01 dfs]# cp /data/disk1/nn_metadata_back/edits/* /data/disk1/dfs/nn/current/
[root@cdh01 dfs]# chown -R hdfs:hdfs /data/disk1/dfs/nn/current/

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_数据_07


注意:因为Fayson的集群NameNode为启用HA,所以将备份的edits数据也拷贝到/data/disk1/dfs/nn/current目录下,如果你的集群启用了HA则可以不用考虑edits数据的恢复。


5.为fsimage文件创建md5校验


[root@cdh01 dfs]# cd nn/current/
[root@cdh01 current]# md5sum fsimage_0000000000004483704 > fsimage_0000000000004483704.md5
[root@cdh01 current]# ll fsimage_0000000000004483704*

(可左右滑动)


NameNode Metadata备份和恢复最佳实践_数据_08


6.完成以上步骤后,启动NameNode服务


NameNode Metadata备份和恢复最佳实践_服务器_09


查看50070端口,HDFS数据已恢复


NameNode Metadata备份和恢复最佳实践_服务器_10


注意:上述的恢复的过程,替换的主机名与IP和之前故障的服务器一致,如果主机名与新添加的服务器不同,在HA的集群中还需要重新初始化Zookeeper znode以进行故障自动转移,Fayson前面的文章《​​如何修改启用了高可用HDFS的NameService ID​​》有介绍


4.总结



1.NameNode Metadata的备份要考虑是否启用HA,如果没有启用HA的NameNode则需要额外的备份edits,启用HA的NameNode则可以不用备份。


2.恢复NameNode Metadata数据到新的服务器上,需要注意新节点与故障节点的hostname是否一致,如果不一致在HA的NameNode集群中需要额外的操作重新初始化Zookeeper znode以进行故障自动转移。


3.恢复数据时需要注意数据目录及文件的权限和属主问题,否则可能会导致NameNode服务不能正常启动。



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

NameNode Metadata备份和恢复最佳实践_hdfs_11

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


标签:cdh01,nn,disk1,备份,dfs,NameNode,root,Metadata
From: https://blog.51cto.com/u_14049791/5731245

相关文章

  • 0526-6.1-如果你不小心删了一个NameNode1
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 集群JournalNode服务重启导致NameNode挂掉分析
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • wordpress多节点部署+rsync备份图片
    基于LAMP架构搭建LB+web+mysql+nas架构,实现从web站点上传的图片自动同步(wordpress)环境:10.0.0.128apache+wordpress服务,数据库主库指向10.0.0.132,基于docker来安装,映射......
  • 0530-6.1-如何只是迁移NameNode或JournalNode
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 网络中冗余备份
    冗余备份的重要性如今社会,网络是各个产业的新的血脉,网络的稳定性至关重要,一旦网络出现故障,导致断网、延迟丢包等很可能会导致生产作业停滞,造成较经济损失,为此冗余备份至......
  • 增量备份的保留策略
    机构通常会定义用于保留备份信息的策略,以帮助机构在发生站点范围的数据丢失时恢复关键业务数据。但是,这些策略通常需要处置不再需要的备份信息。手动跟踪和删除超出备份保留......
  • Linux /Centos 7 服务器定时将备份信息、日志发送到邮箱
    公司业务需要将数据库每日备份,然后在保存到本地硬盘,且未搭建文件服务器。于是换一种思路解决,利用Linux发送邮件并添加备份文件作为附件信息,发送到指定的邮箱,然后定时执行脚......
  • gitlab备份迁移
    1.备份#/bin/bash#用途:备份gitlabDAY=`date+%Y-%m-%d`BAK_DIR=/data/backup/chown-Rgit.git$BAK_DIRmkdir-p$BAK_DIR/logs/gitlab-rakegitlab:backup:cr......
  • 使用 Redpanda 和 OpenMetadata 发现、协作并正确获取您的数据
    使用Redpanda和OpenMetadata发现、协作并正确获取您的数据了解如何将Redpanda数据提取到OpenMetadata以集中元数据。这是与合作的帖子红熊猫数据.您可以在Re......
  • mongo备份/恢复工具mongodump和mongorestore
    mongodump备份oplog https://www.cnblogs.com/easydb/p/14286810.htmlhttps://www.modb.pro/db/152396https://cloud.tencent.com/developer/article/1429385https://b......