一、dits和fsimage
首先要提到两个文件edits和fsimage,下面来说说他们是做什么的。
- 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中。
- 当名称节点(NameNode)启动时,会从镜像文件 fsimage 中读取HDFS的状态,并且把edits文件中记录的操作应用到fsimage,也就是合并到fsimage中去。合并后更新fsimage的HDFS状 态,创建一个新的edits文件来记录文件系统的变化
那么问题来了,只有在名称节点(NameNode)启动的时候才会合并fsimage和edits,那么久而久之edits文件会越来越大,特别是大型繁忙的HDFS集群。这种情况下,由于某种原因你要重启名称节点(NameNode),那么会花费很长的时间去合并fsimge和edits,然后HDFS才能运行。
二、Secondary NameNode
目前使用的版本hadoop-0.20.2可以使用Secondary NameNode来解决上面的问题。Secondary NameNode定期合并fsimage和edits日志,把edits日志文件大小控制在一个限度下。因为内存需求和NameNode差不多(On the same order),所以Sencondary NameNode通常要运行在另外个机器上。
secondary NameNode配置在conf/masters文件,启动命令:bin/start-dfs.sh(如果你使用不建议的start-all.sh也是会启动的)。
三、什么时候checkpiont
secondary NameNode 什么时候执行checkpoint来合并fsimage和eidts。呢?有两个配置参数控制:
- fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
- fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。
secondary NameNode 保存最后一次checkpoint的结果,存储结构和主节点(NameNode)的一样,所以主节点(NameNode)可以随时来读取。
如果你没有启动secondary NameNode 那么可以试试 bin/hadoop secondarynamenode -checkpoint 甚至 bin/hadoop secondarynamenode -checkpoint force. 看看生成的文件。
checkpoint可以解决重启NameNode时间过长的弊端。另外还有偏方:
四、Import Checkpoint(恢复数据)
如果主节点挂掉了,硬盘数据需要时间恢复或者不能恢复了,现在又想立刻恢复HDFS,这个时候就可以import checkpoint。步骤如下:
- 拿一台和原来机器一样的机器,包括配置和文件,一般来说最快的是拿你节点机器中的一台,立马能用(部分配置要改成NameNode的配置)
- 创建一个空的文件夹,该文件夹就是配置文件中dfs.name.dir所指向的文件夹。
- 拷贝你的secondary NameNode checkpoint出来的文件,到某个文件夹,该文件夹为fs.checkpoint.dir指向的文件夹
- 执行命令bin/hadoop namenode -importCheckpoint
这样NameNode会读取checkpoint文件,保存到dfs.name.dir。但是如果你的dfs.name.dir包含合法的fsimage,是会执行失败的。因为NameNode会检查fs.checkpoint.dir目录下镜像的一致性,但是不会去改动它。
值得推荐的是,你要注意备份你的dfs.name.dir和 ${hadoop.tmp.dir}/dfs/namesecondary。
五、Checkpoint Node 和 Backup Node
在后续版本中hadoop-0.21.0,还提供了另外的方法来做checkpoint:Checkpoint Node 和 Backup Node。则两种方式要比secondary NameNode好很多。所以 The Secondary NameNode has been deprecated. Instead, consider using the Checkpoint Node or Backup Node.
Checkpoint Node像是secondary NameNode的改进替代版,Backup Node提供更大的便利,这里就不再介绍了。
采用drbd + heartbeat方案实现name node的HA。drbd实现共享存储,在drbd的2个服务器上共享存储元数据,2台服务器对hadoop提供一个同样的虚拟IP。heartbeat实现心跳监控,所有服务器都配有双网卡,其中一个网卡专门用于建立心跳网络连接。当heartbeat监控到线上的机器挂掉时,会自动的切换到另一台机器上,对外IP不变。 namenode的恢复,没有处理过类似的问题,不过猜想和secondary namenode 有关, 应该是将secondary namenode 存储的数据copy到namenode上,或是直接将secondary namenode 变成namenode 。 至于节点问题,down的节点经过恢复后,可以直接链接进入hadoop集群,而不用重新启动集群。 命令是
bin/hadoop-daemon.sh start datanode
相关推荐
2. 删除NameNode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name) 3. 拷贝SecondaryNam
NameNode职责
Hadoop Namenode恢复
Hadoop Namenode性能诊断及优化
详细讲解了Hdfs中NameNode节点的配置,备份和恢复,以及secondNamenode的配置
hdfs的namenode的元数据管理机制,简要画出了元数据管理的流程分析
NameNode及SecondaryNameNode分析
NULL 博文链接:https://snv.iteye.com/blog/1884565
未知原因导致namenode 的fsimage等文件丢失,namenode重启失败的参考解决
hadoop NameNode 源码解析
王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第九讲Hadoop图文训练课程:剖析NameNode和Secondary NameNode的工作机制和流程. 此教程来自于王家林免费发布的3本Hadoop教程:云计算分布式大数据...
最新的hdfs namenode主备安装文档,详细,命令只需要copy执行即可
第5章 NameNode和SecondaryNameNode(面试开发重点) 5.1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应...
大家都知道HDFS的架构由NameNode,SecondaryNameNode和DataNodes组成,其源码类图如下图所示:正如上图所示,NameNode和DataNode继承了很多的protocol用于彼此间的通信,其实nameNode还实现了...实现了ClientProtocol...
今天小编就为大家分享一篇关于Hadoop之NameNode Federation图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
1. Hadoop 2.0 2. 部署在2个Ubuntu上 3. 2个namenode 2个datanode
HDFS体系结构(NameNode、DataNode详解)
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件 (2)客户端对元数据进行增删改的请求 (3)NameNode记录操作日志,更新滚动
在12月1日“Hadoop生态系统”主题分论坛,华为电信与核心网产品线BigData团队的架构师Uma Maheshwara Rao G,负责HDFS项目整体技术开发。对电信领域有深刻理解,从2010年起从事HDFS开发,是HDFS的核心设计人员。...