首页 > 编程语言 >Hadoop集群的NameNode的备份

Hadoop集群的NameNode的备份

时间:2023-09-20 12:04:39浏览次数:37  
标签:fs 备份 hadoop Hadoop user oplog NameNode trash


Hadoop集群中,NameNode节点存储着HDFS上所有文件和目录的元数据信息

如果NameNode挂了,也就意味着整个Hadoop集群也就完了

所以,NameNode节点的备份很重要,可以从以下2个方面来备份NameNode节点

1. 在hdfs-site.xml中,配置多个name的dir到不同的磁盘分区上:

<property>
    <name>dfs.name.dir</name>
    <value>/pvdata/hadoopdata/name/,/opt/hadoopdata/name/</value>
</property>

2. 在另外的一台服务器上配置Secondary NameNode:它是NameNode的一个备份

Secondary NameNode会定期合并fsimage和edits日志,将edits日志文件大小控制在一个限度下

合并的时机是由2个配置参数决定的:

fs.checkpoint.period,指定连续两次检查点的最大时间间隔, 默认值是1小时。
fs.checkpoint.size定义了edits日志文件的最大值,一旦超过这个值会导致强制执行检查点(即使没到检查点的最大时间间隔)。默认值是64MB。

Secondary NameNode的配置过程如下:

  • 在conf/masters中指定第二名称节点的主机名
  • 在core-site.xml中指定checkpoint的目录

<property>
  <name>fs.checkpoint.dir</name>
  <value>/opt/hadoopdata/secondname,/pvdata/hadoopdata/secondname</value>
  <description>Determines where on the local filesystem the DFS secondary
      name node should store the temporary images to merge.
      If this is a comma-delimited list of directories then the image is
      replicated in all of the directories for redundancy.
  </description>
</property>

如果NameNode节点挂了,可以按照如下步骤来从Secondary NameNode来恢复:

  • 在dfs.name.dir指定的位置建立一个空文件夹
  • 从Secondary NameNode上把secondname的目录给scp到新的NameNode机器的fs.checkpoint.dir下
  • 使用hadoop/bin/hadoop namenode -importCheckpoint来启动NameNode,主要不要执行format命令
  • 使用hadoop fsck /user命令检查文件Block的完整性

详细的Secondary NameNode细节可参考Hadoop官方文档:

http://hadoop.apache.org/common/docs/r0.20.2/hdfs_user_guide.html#Secondary+NameNode

 

==========================================================



惊天大悲剧-Hadoop的rmr和trash



这两天在操作Hadoop集群时,由于一个误操作,制作了一个天大的悲剧

不小心把Hadoop集群上的所有文件全部删除了,具体情况是这样的:

我用hadoop的超级帐户要建立一个目录,结果发现位置错了

也是,想使用rmr删掉那个目录,可是不小心把命令写成了

hadoop fs -rmr /user

于是,悲剧出现了,所有user目录下的所有目录和文件全都没有了

当时我就慌神了,赶紧从web查看50070的服务

眼看着DFS Used空间从100多G不停的减少

后来才反应过来,赶紧停掉namenode节点,然后上网google办法

后来,从secondname节点重新恢复了一个checkpoint

但绝大部分数据都已经丢失了,只恢复了一小部分数据,已经没啥用了

幸好,原始log我们在其它服务器上还保留的有,只能重新分析再入Hadoop了

总结了一下几点教训:

  1. 首先一定要控制好hadoop上各用户的权限,使各user只能操作自己的目录
  2. 尽量少用hadoop的超级用户进行操作,可以减少误操作
  3. hadoop的rm和rmr命令,设计的太BT了,连一个确认提示都没有,直接就删除了。看到有人给官方提了这个建议,但人家回复说:已经有了trash机制了,所以不需要提示,真是无语….
  4. hadoop的trash功能:很遗憾,之前没有配置trash,所以就直接给删除了,经过这次误操作,赶紧配置上trash,并设置保留时间为7天。

在core-site.xml中增加如下配置,表明rm后会在trash中保留多少分钟:

<property>
  <name>fs.trash.interval</name>
  <value>10080</value>
  <description>
      Number of minutes between trash checkpoints. If zero, the trash feature is disabled
  </description>
</property>

很遗憾的是,hadoop的这个默认值是0,就是直接删除了,为什么要这么设计呢?郁闷….

经过简单的测试,这个trash功能还是不错的,当rm后,它会move到当前文件夹下的.Trash目录下

如果你删除一个文件或目录多次,则hadoop会自动在name后加上数字序列号

这样,如果你误删除后,就可以有选择的恢复文件了

hadoop fs -mkdir /user/oplog/test
hadoop fs -put *.txt /user/oplog/test
hadoop fs -rmr /user/oplog/test
hadoop fs -ls /user/oplog/.Trash/Current/user/oplog
    drwxr-xr-x   – oplog oplog          0 2010-11-16 10:44 /user/oplog/.Trash/Current/user/oplog/test
hadoop fs -mv /user/oplog/.Trash/Current/user/oplog/test /user/oplog/
hadoop fs -ls /user/oplog/.Trash/Current/user/oplog
    drwxr-xr-x   – oplog oplog          0 2010-11-16 10:44 /user/oplog/.Trash/Current/user/oplog/test
    drwxr-xr-x   – oplog oplog          0 2010-11-16 10:47 /user/oplog/.Trash/Current/user/oplog/test.1

标签:fs,备份,hadoop,Hadoop,user,oplog,NameNode,trash
From: https://blog.51cto.com/u_16255870/7535844

相关文章

  • Hadoop集群中增加新节点
    向一个正在运行的Hadoop集群中增加几个新的Nodes1.新节点上部署java/hadoop程序,配置相应的环境变量2.新节点上增加用户,从master上拷贝id_rsa.pub并配置authorized_keys3.新节点上设置host,需要有集群中各节点的host对应4.新节点上建立相关的目录,并修改属主5.master的slaves文件......
  • Hadoop集群上使用Lzo压缩
    自从Hadoop集群搭建以来,我们一直使用的是Gzip进行压缩当时,我对gzip压缩过的文件和原始的log文件分别跑MapReduce测试,最终执行速度基本差不多而且Hadoop原生支持Gzip解压,所以,当时就直接采用了Gzip压缩的方式关于Lzo压缩,twitter有一篇文章,介绍的比较详细,见这里:Lzo压缩相比Gzip压缩,有......
  • KingbaseES V8R3 备份恢复案例 -- sys_rman物理备份异机恢复
    案例说明:在生产环境通过sys_rman执行了物理备份后,需要在异机构建测试环境,本案例描述了通过物理备份异机恢复的详细过程及操作。适用版本:KingbaseESV8R3节点信息:[kingbase@node102bin]$cat/etc/hosts......192.168.1.101node101#生产节点192.168.1.102node......
  • clickhouse-backup 备份恢复测试
    一、安装配置1.下载https://github.com/AlexAkulov/clickhouse-backup/releases2.安装[root@backup-db~]#rpm-ivhclickhouse-backup-1.3.1-1.x86_64.rpmPreparing...#################################[100%]Updating/installing...1:clickhouse-backup-1.3.1-1#####......
  • 导出复制行备份
    XSSFRowrow15=sheetAt.getRow(15);sheetAt.shiftRows(15,sheetAt.getLastRowNum(),map2.size()-1,true,false);for(inta=0;a<(map2.size()-1);a++){XSSFRowtargetrow=sheetAt.createRow......
  • Hadoop安装
    一、Hadoop依赖jdk,先安装jdk1.8#下载安装包jdk-8u261-linux-x64.tar.gzhttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html•选择tar.gz64位版本#解压安装包mkdir-p/usr/java/cd/home/fzy/soft/jdkta......
  • SQL Server备份/还原 SQL注入
    SQL还原目标数据库 注:不能在目标数据库会话中执行alterdatabasetestsetsingle_userwithrollbackimmediate--(这里也可以延迟几秒回滚你的操作)restoredatabasetestfromdisk='d:\test.bak'alterdatabasetestsetmulti_user无意中看到的,有意思的SQL注入:--完整备份......
  • KingbaseES V8R6备份恢复案例之---备份crond计划任务的调整
    案例说明:在KingbaseESV8R6数据库通常备份建立的crond任务,默认由root用户建立,写入到/etc/cron.d/KINGBASECRON文件中,在有的生产环境限制了普通用户使用root的权限,创建计划任务可能失败,新的KingbaseESV8R6版本,将计划任务由数据库用户创建,比如通用机环境,将由kingbase用户创建计划......
  • KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障
    案例说明:KingbaseESV8R6集群,备库作为repo-path节点,建立类型为‘cluster’模式的备份,在执行sys_backup.shinit时,出现“cannotfindprimarynode”故障。故障如下图所示:适用版本:KingbaseESV8R6一、集群及备份配置1、集群节点状态[kingbase@node101bin]$./repmgrclus......
  • KingbaseES V8R6集群运维案例--cluster模式备份sys_backup.sh init故障
    KingbaseESV8R6集群运维案例--cluster模式备份sys_backup.shinit故障案例说明:通过脚本方式部署KingbaseESV8R6集群后,在‘cluster’模式备份,执行sys_backup.shinit时,出现“cannotcontain//for”log-path"option"错误,但是在‘single’模式下备份,无此错误。故障信息......