HDFS Rolling Upgrade的实现要点分析

本文分析了HDFS Rolling Upgrade的实现要点,包括NameNode和DataNode的调整。NameNode中,元数据处理、Layout拆分和Rolling Upgrade命令支持得以优化;DataNode则通过快速启动和OOB信息减少升级影响,并延迟删除处理。详细内容可参考HDFS-5535 JIRA。
摘要由CSDN通过智能技术生成

前言


我们知道HDFS Rolling Upgrade功能在几年前比较早的时间早已实现,但是我们往往只注意怎么去做HDFS Rolling Upgrade这个事情本身,但是对于HDFS如何实现Rolling Upgrade这个功能可能了解的会比较少。本文笔者来聊聊其中部分要点的设计实现,为了做到Rolling Upgrade的快速和安全性,社区在这块实现上还是花了一些功夫的。本文主要基于HDFS Rolling Upgrade社区JIRA HDFS-5535:Umbrella jira for improved HDFS rolling upgrades来展开内容进行阐述。

HDFS NameNode端针对Rolling Upgrade的调整


HDFS针对Rolling Upgrade的实现,在NameNode和DataNode两边都进行了相关的调整实现。首先我们来看NameNode做了哪些模块的调整。

第一个,NameNode在pre-upgrade, upgrade in-progress, finalized, downgrade/rollback这些期间
元数据文件的一个状态处理,包括FsImage文件以及editlog文件。当我们执行Rolling Upgrade的rollback操作时,NN是可以支持撤销rolling upgrade时的那个transaction后发生的所有transaction。简单来说,它会忽略掉升级过程中执行过的那些事务transaction。

第二点,Layout的拆分,原有Layout一拆为二,分别有NameNode和DataNode各自对应的NamenodeLayoutVersion和DatanodeLayoutVersion。Layout内会分别记有NameNode,DataNode这边的当前版本所支持的各种feature或者标明目录结构版本的信息,相关JIRA HDFS-5754(Split LayoutVerion into NamenodeLayoutVersion and DatanodeLayoutVersion)

例如以下是NameNode NamenodeLayoutVersion和DataNode DatanodeLayoutVersion的内部信息:

public class NameNodeLayoutVersion {
    
  ...

  public enum Feature implements LayoutFeature {
   
    ROLLING_UPGRADE(-55, -53, -55, "Support rolling upgrade", false)
### 回答1: "rolling upgrade" 是一种 HDFS升级方式,它允许在不停止整个系统的情况下升级到新版本。在开始 "rolling upgrade" 操作之后,NameNode 会开始处理升级请求。这意味着 NameNode 将会接受新的数据块和读取请求,但是它不会分配新的数据块。在整个系统中的所有 DataNode 都完成升级之后,NameNode 可以恢复正常工作。 ### 回答2: "hdfs namenode -rollingUpgrade started"是Hadoop分布式文件系统(HDFS)中的一个命令,用于启动一个滚动升级。 滚动升级是指在不中断现有服务的情况下,对系统进行升级或更新。这个命令的执行将触发一个升级过程,该过程将逐个处理HDFS集群中的每个数据节点,并使它们按顺序升级到新的版本或补丁。 在HDFS中,数据节点是存储数据块的物理节点。而NameNode是整个系统的主节点,负责管理文件系统的命名空间和元数据。在滚动升级过程中,NameNode将逐个处理每个数据节点,确保它们以一种有序的方式进行升级。 滚动升级的好处是可以在系统维护期间保持高可用性和持续的数据访问。因为在升级过程中,只有部分节点会被暂停或重启,而其他节点仍然可以继续提供服务。这使得系统可以在升级过程中保持运行,并且对外部用户是透明的。 执行"hdfs namenode -rollingUpgrade started"命令后,系统将开始滚动升级过程。在这个过程中,NameNode将按照一定的顺序处理每个数据节点,并将其升级到新的版本或补丁。此命令的执行可能需要一些时间,具体取决于集群中数据节点的数量和网络条件。 需要注意的是,滚动升级的过程中,系统的一些功能和性能可能会受到一些限制或影响。因此,在进行任何类型的升级或维护操作之前,应当确保已经做好了相应的备份和恢复准备工作,并与相关的用户或团队进行沟通和协调。 ### 回答3: hdfs namenode -rollingUpgrade started 是Hadoop分布式文件系统(HDFS)中的一个命令,用于启动滚动升级操作。滚动升级是指在不中断服务的情况下逐步升级系统的过程。 它主要用于在Hadoop集群中,将一个正在运行的系统从一个版本升级到下一个版本,而不会中断正在进行的数据处理任务。滚动升级启动后,它会启动一个升级进程,该进程将负责升级系统中的每个节点。 在滚动升级过程中,HDFS中的NameNode节点会得到特别关注。NameNode是HDFS的主节点,负责管理文件系统的命名空间、数据块的映射以及用户的访问控制等功能。滚动升级期间,NameNode会逐个升级每个节点,确保整个集群的系统版本保持一致。 滚动升级的目的是确保系统在升级过程中的平稳过渡,并最大程度地减少系统中断对用户和任务的影响。通过逐个升级节点,集群中的其他节点可以继续正常工作,数据的可用性和可靠性得到保证。 需要注意的是,滚动升级是一个时间较长的过程,可能需要数小时甚至数天才能完成。升级期间,操作人员应密切关注升级进展,确保升级过程中没有错误发生,并根据需要采取相应的措施。 总而言之,hdfs namenode -rollingUpgrade started 是启动HDFS中的滚动升级操作的命令,通过逐个升级节点,确保系统在升级过程中的平稳过渡,最大程度地减少中断对用户和任务的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值