Hadoop之SecondaryNameNode、CheckpointNode、BackupNode

Hadoop-2.x版本之前只存在SecondaryNameNode,没有CheckpointNodeBackupNode的概念,在2.x版本中引入了后两者,增强了对NameNode的同步和备份。现在就学习一下2.x版本中的SecondaryNameNodeCheckpointNodeBackupNode,在开始之前先了解一下NameNode中的两个重要文件fsimageedits以及NameNode是如何使用这两个文件持久化命名空间的,比如HDFS文件系统的元数据。

NameNode使用fsimageedits持久化命名空间,其中fsimage保存最新的检查点信息,edits保存自最新检查点后的命名空间的变化。当NameNode启动时,NameNodefsimage中读取HDFS的状态,并会合并edits中信息到fsimage中以提供最新的文件系统元数据,这样fsimage中保存了HDFS的最新状态并会创建新的空的edits文件。由于fsimageedits的合并只在NameNode启动时执行,如果NameNode长时间没有重新启动过,edits日志文件将会变得非常大,另一个edits日志文件太大的副作用是下次NameNode的重启将会花费更多的时间,因为需要更多的时间合并fsimageedits文件。

由上面的描述可知fsimageedits文件对整个HDFS有着至关重要的作用,一旦NameNode失效,比如宕机无法启动或者硬盘损坏,就将导致由于失去fsimageedits文件而无法启动HDFS的现象,所以就出现了SecondaryNameNodeCheckpointNodeBackupNode用于对fsimageedits文件备份,SecondaryNameNode是最先存在的,后两者是在2.x版本引入的。

SecondaryNameNode定期性地合并fsimageedits文件,并保证edits日志文件大小不超过某个阈值。

SecondaryNameNodeNameNode运行在不同的主机上,并且内存要与NameNode的内存一样大小。

SecondaryNameNode将包含最新检查点信息的fsimage存储在与NameNode目录结构一致的目录中,这样SecondaryNameNodefsimage总是在必要时可以被NameNode读取。SecondaryNameNode上检查点进程的启动被下面两个参数控制:

  • dfs.namenode.checkpoint.period,指定了两次连续的检查点之间的最大间隔,默认值为3600秒,即1小时
  • dfs.namenode.checkpoint.txns,定义了NameNode上未检查的事务的数量,当NameNode上未检查的事务的数量达到该值时,将会启动紧急检查点而不管 dfs.namenode.checkpoint.period 设置的时间间隔是否有效,默认值为1000000。

       CheckpointNode定期地创建命名空间的检查点。具体是如何做的呢?首先从NameNode下载fsimageedits,然后在本地合并它们,然后将合并后的新的fsimage上传回NameNode,这样就避免了重新启动NameNode再合并fsimageedits的问题。CheckpointNodeNameNode通常运行在不同的机器上,内存与NameNode的内存一样大小。使用参数dfs.namenode.backup.address设置CheckpointNode的地址,参数dfs.namenode.backup.http-address设置CheckpointNode的web地址,使用命令bin/hdfs namenode –checkpoint启动CheckpointNodeCheckpointNode控制检查点进程的参数与SecondaryNameNode上的参数一致,也是dfs.namenode.checkpoint.perioddfs.namenode.checkpoint.txnsCheckpointNode上保存fsimageedits文件的目录结构与NameNode上的一致。

       BackupNode不仅提供了与CheckpointNode相同的检查点功能,而且在内存中维护了文件系统命名空间的最新拷贝,该拷贝与NameNode中的状态总是同步的。除了从NameNode接收edits文件流外,BackupNode将这些edits文件在内存中创建副本,这样就创建了命名空间的备份。BackupNode不需要从NameNode下载fsimage和edits文件以创建检查点(CheckpointNode和SecondaryNameNode需要从NameNode下载这些文件),因为BackupNode已经在内存中最新的命名空间状态。BackupNode的检查点更加高效,因为它只需要将命名空间保存到本地fsimage文件中并重置edits文件。BackupNode的内存大小与NameNode的一样。

       NameNode一次只支持一个BackupNode,并且在启用BackupNode的同时不启用CheckpointNode。这一点也可以从参数dfs.namenode.backup.addresdfs.namenode.backup.http-addres推断而出,因为配置BackupNode和CheckpointNode都是这两个参数。使用命令bin/hdfs namenode –backup启动BackupNode。BackupNode为NameNode运行而不需要持久化存储提供了选项,可以将持久化命名空间状态的责任委托给BackupNode,因为BackupNode实时地从NameNode取得命名空间的状态。要想实现该目的,在启动NameNode时使用-importCheckpoint选项,并在配置文件中将参数dfs.namenode.edits.dir设置为空。

       上面的学习描述了Hadoop-2.x版本中SecondaryNameNode、CheckpointNode和BackupNode的工作机制,通过学习可以发现在Hadoop-2.x中,对NameNode中命名空间状态的备份更加强大和高效,整个集群也因此具有更高的可用性和数据完整性,对于更多的细节,比如轮询、传输文件流到BackupNode,则需要结合配置文件中的相关参数和源代码进行更深层次的学习。

### 回答1: Hadoop没有secondarynamenode是不正确的说法。在Hadoop中,Secondary NameNode(次要名称节点)是一个重要的组件,用于协助NameNode(名称节点)管理HDFS(Hadoop分布式文件系统)的元数据。Secondary NameNode会定期从NameNode获取元数据的快照,并将其存储在本地磁盘上,以便在NameNode发生故障时可以快速恢复。因此,Secondary NameNodeHadoop集群中扮演着非常重要的角色。 ### 回答2: Hadoop是一个分布式的系统,可以用来处理非常大量的数据。在Hadoop的分布式文件系统HDFS中,文件被分成很多个块,这些块可以存储在不同的机器上。而为了保证数据的可靠性,每个块还会有多个副本,这些副本可以存储在不同的机器上。这就使得数据不容易丢失,即使某个机器出现了故障也可以保证数据的安全。 在HDFS中,有两个重要的节点,一个是NameNode,另一个是DataNode。NameNode维护着整个文件系统的命名空间,它记录了哪个文件分成了哪些块,这些块存储在哪些机器上等信息。而DataNode则是实际存储数据的地方,每个DataNode都存储着一部分块的副本。 那么,SecondaryNameNode是什么呢?我们可以简单地理解为NameNode的辅助节点。它的主要作用是定期与NameNode通信,将NameNode的元数据信息复制一份到自己的本地磁盘上,以防止NameNode故障或数据丢失。当NameNode故障后,SecondaryNameNode可以快速地恢复NameNode的数据,使得系统能够快速恢复正常工作状态。 但是在最新的Hadoop版本中,SecondaryNameNode已经被弃用了,取而代之的是NameNode的HA(高可用性)机制。这种机制通过将多个NameNode组成一个集群来实现,每个NameNode都可以独立工作并负责整个文件系统的管理,当某个NameNode出现故障时,其他节点可以立即接管整个集群,保证系统的正常运行。 综上所述,虽然Hadoop没有SecondaryNameNode了,但通过HA机制可以实现更稳定、可靠的分布式系统。 ### 回答3: Hadoop是一个开源的分布式文件系统和大数据处理框架,它具有高可靠性、高可扩展性、高效性等特点,在大数据领域非常受欢迎。在Hadoop中,secondarynamenode是一个重要的组件,它的作用是辅助namenode来管理Hadoop文件系统。但是,近年来,随着Hadoop的升级,secondarynamenode逐渐被弃用,取而代之的是另外一个组件——Checkpoint node。 那么,为什么Hadoop没有secondarynamenode呢?原因有以下几点: 第一,secondarynamenode存在单点故障的问题。在Hadoop早期版本中,如果namenode失效,那么所有的Hadoop文件系统都会停止工作。为了解决这个问题,Hadoop引入了secondarynamenode来备份日志信息并定期向namenode发送最新的文件系统快照。但secondarynamenode作为一个单独的节点,如果它本身失效,就会导致整个Hadoop集群出现故障。 第二,secondarynamenode的性能可能受限。虽然secondarynamenode的出现解决了namenode单点故障的问题,但它本身也可能成为性能瓶颈。由于secondarynamenode需要定期接收namenode的编辑日志以生成新的快照,因此其性能可能不足以处理大规模文件系统的数据量。 基于以上两个因素,Hadoop官方决定使用Checkpoint node来取代secondarynamenodeCheckpoint node是一个完全分布式的组件,可以部署在Hadoop集群中的任何节点上,因此避免了单点故障的问题。此外,Checkpoint node可以根据需要自动调整备份数量和备份频率,可以更好地适应不同的应用场景。 总之,Hadoop虽然没有secondarynamenode,但是它选择了更加适合当前大数据场景的Checkpoint node来取代它的作用,以更好地满足分布式文件系统和大数据处理的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值