`
xiang37
  • 浏览: 428292 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

NameNode 和 Secondary NameNode 的区别和作用

 
阅读更多

原文来自 : http://www.jianshu.com/p/5d292a9a8c86

前言

最近刚接触Hadoop, 一直没有弄明白NameNode和Secondary NameNode的区别和关系。很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,直到读了这篇文章Secondary Namenode - What it really do? 才发现并不是这样。文章写的很通俗易懂,现将其翻译如下:

Secondary NameNode:它究竟有什么作用?

在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一。从它的名字上看,它给人的感觉就像是NameNode的备份。但它实际上却不是。很多Hadoop的初学者都很疑惑,Secondary NameNode究竟是做什么的,而且它为什么会出现在HDFS中。因此,在这篇文章中,我想要解释下Secondary NameNode在HDFS中所扮演的角色。

从它的名字来看,你可能认为它跟NameNode有点关系。没错,你猜对了。因此在我们深入了解Secondary NameNode之前,我们先来看看NameNode是做什么的。

NameNode

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。

这里写图片描述

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

fsimage - 它是在NameNode启动时对整个文件系统的快照 
edit logs - 它是在NameNode启动后,对文件系统的改动序列 
只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。在这种情况下就会出现下面一些问题:

edit logs文件会变的很大,怎么去管理这个文件是一个挑战。 
NameNode的重启会花费很长时间,因为有很多改动[笔者注:在edit logs中]要合并到fsimage文件上。 
如果NameNode挂掉了,那我们就丢失了很多改动因为此时的fsimage文件非常旧。 
因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。这跟Windows的恢复点是非常像的,Windows的恢复点机制允许我们对OS进行快照,这样当系统发生问题时,我们能够回滚到最新的一次恢复点上。

现在我们明白了NameNode的功能和所面临的挑战 - 保持文件系统最新的元数据。那么,这些跟Secondary NameNode又有什么关系呢?

Secondary NameNode

SecondaryNameNode就是来帮助解决上述问题的,它的职责是合并NameNode的edit logs到fsimage文件中。

这里写图片描述

上面的图片展示了Secondary NameNode是怎么工作的。

首先,它定时到NameNode去获取edit logs,并更新到fsimage上。[笔者注:Secondary NameNode自己的fsimage] 
一旦它有了新的fsimage文件,它将其拷贝回NameNode中。 
NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。 
Secondary NameNode的整个目的是在HDFS中提供一个检查点。它只是NameNode的一个助手节点。这也是它在社区内被认为是检查点节点的原因。

现在,我们明白了Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。所以从现在起,让我们养成一个习惯,称呼它为检查点节点吧。

后记

这篇文章基本上已经清楚的介绍了Secondary NameNode的工作以及为什么要这么做。最后补充一点细节,是关于NameNode是什么时候将改动写到edit logs中的?这个操作实际上是由DataNode的写操作触发的,当我们往DataNode写文件时,DataNode会跟NameNode通信,告诉NameNode什么文件的第几个block放在它那里,NameNode这个时候会将这些元数据信息写到edit logs文件中。

分享到:
评论

相关推荐

    namenode启动失败参考

    - 定期执行Secondary Namenode的检查点操作,以定期合并fsimage和edits,防止edits文件过大。 - 配置和维护HDFS HA,确保有备用Namenode以防主Namenode故障。 - 使用Zookeeper进行故障切换协调,确保高可用性。 - 对...

    Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表

    端口 作用 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50070 dfs.namenode.http-address 50470 dfs.namenode.https-address 50100 dfs.namenode....

    Hadoop中namenode和secondarynamenode工作机制讲解

    在HDFS中,namenode和secondarynamenode起着至关重要的作用,它们确保了HDFS元数据的完整性和可靠性。 namenode是HDFS的主服务器,负责管理文件系统命名空间,维护文件系统树及整个HDFS的目录结构。所有关于文件...

    最新大数据面试总结(105页).pdf

    Secondary NameNode的作用: 1. 定期询问NameNode是否需要做CheckPoint(元数据快照)。 2. 当NameNode同意后,Secondary NameNode接收旧的Fsimage和Edits。 3. 合并Fsimage和Edits生成新的Fsimage.chkpoint。 4. 将...

    Hadoop Namenode恢复

    3. `<property><name>fs.checkpoint.dir</name><value>/data/work/hdfs/namesecondary</value><description>Determines where on the local filesystem the DFS secondary ...-secondary namenode 的存储目录...

    【HDFS篇08】NameNode故障处理1

    在分布式文件系统Hadoop的HDFS(Hadoop Distributed File System)中,NameNode是核心组件,负责元数据的管理,包括文件系统命名空间和文件块的映射信息。当NameNode发生故障时,数据的可用性和系统的稳定性都会受到...

    Hadoop大数据期末考试重点

    2. **配置文件的区别**:hadoop-env.sh配置文件用于确保Hadoop系统能正常运行HDFS守护进程,如NameNode、Secondary NameNode和DataNode,而非yarn-env.sh。 3. **Hadoop2.x的Block大小**:在Hadoop2.x中,默认的...

    【大数据学习资料】大数据框架知识点总结.pdf

    本文总结了大数据框架中的重要知识点,包括HDFS读写流程、NameNode和Secondary NameNode的工作机制、HA NameNode的工作原理等。 一、HDFS读写流程 1. HDFS写数据流程: 客户端通过Distributed FileSystem模块向...

    Hadoop-2.0-NameNode-HA和Federation实践1

    为此,Hadoop社区引入了多种解决方案,如Secondary NameNode、Backup NameNode、AvatarNode等,但这些方法要么不能提供即时的故障切换,要么不能保证数据完整性。 HA的实现方式主要依赖于共享存储和故障切换机制。...

    Hadoop源代码分析(三七)

    【Hadoop源代码分析(三七)】 在Hadoop生态系统中,Secondary NameNode扮演着重要的角色...理解这一过程对于优化Hadoop集群的性能和维护至关重要,特别是在处理大规模数据时,Secondary NameNode的作用显得尤为重要。

    10万字大数据框架总结

    (2)如果有,Secondary NameNode将当前的FsImage和Edit logs复制到自己的工作目录下,然后将Edit logs应用到FsImage,生成一个新的FsImage文件。(3)Secondary NameNode将新生成的FsImage文件回传给NameNode,...

    Hadoop源代码分析(三六)

    通过对Hadoop源代码的分析,我们可以更加深刻地理解Secondary NameNode的重要作用及其与NameNode之间的交互方式。虽然它在HDFS架构中看似是一个“小配角”,但实际上它对于维护系统的健壮性和提高效率至关重要。通过...

    Hadoop大数据平台构建、HDFS配置、启动与验证教学课件.pptx

    可以使用hadoop fs -ls命令检查文件系统,或者通过Web界面查看NameNode和Secondary NameNode的状态。 总结来说,构建Hadoop大数据平台的HDFS集群涉及到多个步骤,包括环境准备、配置文件调整、服务启动和健康检查。...

    hadoop-hdfs-1.docx

    4. Secondary NameNode:Secondary NameNode是HDFS集群中的备份NameNode,用于在Primary NameNode故障时提供服务。Secondary NameNode会定期从Primary NameNode同步数据,以确保数据的一致性。 5. 数据块报告:...

    Hadoop原理详细解析.pdf

    这样,NameNode始终保持最新的元数据信息,而Secondary NameNode则可以处理旧的FsImage和EditLog。 在大型集群中,由于Secondary NameNode需要加载FsImage到内存,所以需要专门的硬件资源。管理员可以通过`hadoop ...

    hadoop相关图片.rar

    - "检查节点用到的文件.png":可能展示的是检查点过程中涉及的文件,如fsimage和edit logs,以及它们在Namenode恢复过程中的作用。 - "文件下载.png":可能描绘了用户或应用程序从HDFS下载文件的流程,包括Namenode...

    hdfs高可用配置文件

    首先,HDFS HA涉及两个主要组件:NameNode和Secondary NameNode。NameNode是HDFS的元数据管理器,负责维护文件系统的命名空间和文件块映射信息。当NameNode出现故障时,会导致整个HDFS服务中断。为了解决这个问题,...

Global site tag (gtag.js) - Google Analytics