HDFS集群滚动升级和降级回滚

目录

一、HDFS 集群滚动升级

1.1 介绍

1.2 不停机滚动升级

1.2.1 非联邦 HA 集群

1.2.1.1 滚动升级准备 

1.2.1.2 升级 Active NN 和 Standbys NN 

1.2.1.3 升级 DN 

1.2.1.4 完成滚动升级 

1.2.2 联邦 HA 集群 

1.3 停机升级 

1.3.1 非 HA 集群 

二、HDFS 集群降级和回滚 

2.1 降级(downgrade)和回滚(rollback)区别  

2.2 HA 集群降级(downgrade) 

2.2.1 降级 DataNode

2.2.2 降级 Active NameNode 和 Standby NameNode 

2.2.3 降级操作的确认 

2.2.4 HA 集群降级(downgrade)注意事项 

2.3 集群回滚(rollback)操作 


一、HDFS 集群滚动升级

1.1 介绍

        在 Hadoop v2 中,HDFS 支持 NameNode 高可用(HA)。使得不停机升级 HDFS 变得可行请注意,仅从 Hadoop-2.4.0 起才支持滚动升级因此为了在不停机的情况下升级 HDFS 群集,必须使用 HA 设置群集

        在 HA 群集中,有两个或多个 NameNodeNN),许多 DataNodeDN),一些JournalNodeJN)和一些 ZooKeeperNodeZKN)。JN 相对稳定,在大多数情况下,升级 HDFS 时不需要升级

        滚动升级过程中,仅针对 NNs 和 DNsJNS 和 ZKNs 都没有。升级 JN 和 ZKN 可能会导致群集停机。

1.2 不停机滚动升级

1.2.1 非联邦 HA 集群

假设有两个名称节点 NN1 和 NN2,其中 NN1 和 NN2 分别处于 Active 和 StandBy 状态。 

1.2.1.1 滚动升级准备 

# 创建一个新的 fsimage 文件用于回滚
hdfs dfsadmin -rollingUpgrade prepare

# 不断运行下面命令检查回滚 fsimage 是否创建完毕。
# 如果显示 Proceeding with Rolling Upgrade 表示已经完成。
hdfs dfsadmin -rollingUpgrade query

1.2.1.2 升级 Active NN 和 Standbys NN 

# 关闭 NN2:
hdfs --daemon stop namenode
# 升级启动 NN2:
hdfs --daemon start namenode -rollingUpgrade started

# 做一次 failover 切换,使得 NN2 成为 Active 节点,NN1 变为 Standby 节点。
# 关闭 NN1:  
hdfs --daemon stop namenode
# 升级启动 NN1:
hdfs --daemon start namenode -rollingUpgrade started

1.2.1.3 升级 DN 

# 选择整体中的一小部分 DataNode 节点进行升级(比如按照DataNode所在的不同机架来筛选)。
# 关闭升级所选的 DN 其中 IPC_PORT 由参数 dfs.datanode.ipc.address 指定,默认 9867。
hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade

# 检查下线 DataNode 是否已经停止服务,如果还能得到节点信息,意味着此节点还未真正被关闭。
hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>

# 启动 DN 节点。
hdfs --daemon start datanode

# 对选中的所有 DN 节点执行以上步骤。重复上述步骤,直到升级群集中的所有 DN 节点。

1.2.1.4 完成滚动升级 

# 完成滚动升级
hdfs dfsadmin -rollingUpgrade finalize

1.2.2 联邦 HA 集群 

        联邦集群(federation)是拥有多 namespace 集群。每个 namespace 对应一对主备 NameNode 节点。上述这套集群就是俗称的联邦+HA集群

        联邦集群的升级过程与非联邦集群的升级过程比较相似,没有什么本质区别,只是需要为不同的 namespace 多重复执行几遍升级操作而已。

#1、在每个 namespace 下执行升级准备
hdfs dfsadmin -rollingUpgrade prepare

#2、升级每个 namespace 下的 Active/Standby 节点
#2.1、关闭 NN2:
hdfs --daemon stop namenode
#2.2、升级启动 NN2:
hdfs --daemon start namenode -rollingUpgrade started
#2.3、做一次 failover 切换,使得 NN2 成为 Active节点,NN1 变为 Standby 节点。
#2.4、关闭 NN1:
hdfs --daemon stop namenode
#2.5、升级启动 NN1:
hdfs --daemon start namenode -rollingUpgrade started

#3、升级每个 DataNode 节点
#3.1、关闭升级所选的 DN 其中 IPC_PORT 由参数 dfs.datanode.ipc.address 指定,默认9867。    
hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade
#3.2、检查下线 DataNode 是否已经停止服务。如果还能得到节点信息,意味着此节点还未真正被关闭
hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
#3.3、启动 DN 节点。
hdfs --daemon start datanode

#4、升级过程执行完毕,在每个 namespace 下执行 finalize 确认命令
hdfs dfsadmin -rollingUpgrade finalize

1.3 停机升级 

1.3.1 非 HA 集群 

        在升级的过程中,势必会存在服务短暂停止的时间,因为 NameNode 需要重启,而这段时间并没有备用节点可选。整体过程同非联邦 HA 模式的 步骤类似。不过步骤二的过程要略微修改:

#Step1:滚动升级准备

#Step2:升级 NN 和 SNN
#1、关闭 NN    
hdfs --daemon stop namenode  
#2、升级启动 NN    
hdfs --daemon start namenode -rollingUpgrade started
#3、停止 SNN    
hdfs --daemon stop secondarynamenode  
#4、升级启动SNN    
hdfs --daemon start secondarynamenode -rollingUpgrade started

#Step3:升级 DN

#Step4:完成滚动升级
hdfs dfsadmin -rollingUpgrade finalize

二、HDFS 集群降级和回 

2.1 降级(downgrade)和回滚(rollback)区别  

  • 共同点:

都会将版本退回到升级前的版本;

在升级的 finalize 动作执行之后将不允许再执行降级和回滚

  • 不同点:

降级能支持 rollling 的方式可以滚动降级而回滚需要停止服务一段时间;

降级过程只会将软件版本还原成升级前的会保留用户现有的数据状态;

而回滚则会将用户数据还原成升级前的状态模式,现有的数据状态不保存。  

友情提示:升级慎重,降级、回滚更要慎重 

        生产环境中,集群升级之前必须进行科学调研,评估升级后的版本跟现有业务的兼容性。在测试环境下完整模拟升级流程,并且针对升级前集群状态进行备份,避免意外发生导致集群中断。不要奢求升级失败时,通过回滚、降级等操作挽救集群。

2.2 HA 集群降级(downgrade 

        如果不希望使用升级版本,或者在某些不太可能的情况下,升级失败(由于较新版本中的错误),管理员可以选择将 HDFS 降级到升级前版本,或将 HDFS 回滚到升级前版本和升级前的状态。

请注意,降级可以滚动方式进行,但不能回滚。回滚要求集群停机。

        还请注意,只有在开始滚动升级之后且终止升级之前,才可以进行降级和回滚。可以通过完成,降级或回滚来终止升级。因此,可能无法在完成或降级之后执行回滚,或者在完成后无法执行降级。 

2.2.1 降级 DataNode

#1. 选中部分集合 DataNode 节点(可以按照机架进行区分)
# 执行降级操作,其中 IPC_PORT 由参数 dfs.datanode.ipc.address 指定,默认 9867。
hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade  

# 执行命令检查节点是否完全停止    
hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>  

# 在选中集合内的其他 DataNode 节点上重复执行上述操作

2.2.2 降级 Active NameNode 和 Standby NameNode 

# 停止并降级 Standby NameNode.
# 正常启动 Standby NameNode
# 触发 failover 切换,使得主备角色对调
# 停止并降级之前属于 Active(现属于 Standby 的 NameNode)
# 正常启动作为 Standby 节点

2.2.3 降级操作的确认 

# 完成降级操作
hdfs dfsadmin -rollingUpgrade finalize

2.2.4 HA 集群降级(downgrade)注意事项 

        降级与升级在 HA 模式下有一个共同点:在操作 NameNode 时,都是先从 Standby 节点开始操作,等 Standby 节点升/降结束,做一次切换,使另外一个节点得以进行升/降操作。在全程中,始终保持一个 Active 节点对外提供服务

        降级过程 NameNode 与 DataNode 操作和在升级时操作顺序正好相反:新版本一般在协议API 是兼容老版本的,如果先降级 NN,那么则会造成 DN 是新版,NN 是旧版。新版 DN 中的许多协议将会在旧版 NN 中可能不兼容。所以这里必须要先降级 DN然后再把服务端 NN 进行降级看似简单的一次顺序颠倒,背后其实是有更深层的原因的。

联邦集群和非 HA 集群的降级操作与升级操作相对应,进行相应操作命令的替换即

2.3 集群回滚(rollback)操作 

回滚注意事项:Rollback 不支持滚动操作的方式,在操作期间,它需要集群对外停止提供服务。

Rollback 操作不仅会将软件版本退回到升级前的版本还会将用户数据退回到升级前的状态。

回滚步骤:

#1.停止所有的 NameNode 和 DataNode 节点
#2.在所有的节点机器上恢复升级前的软件版本
#3.在 NN1 节点上执行 -rollingUpgrade rollback 命令来启动 NN1,将 NN1 作为 Active 节点
#4.在 NN2 上执行 -bootstrapStandby 命令并正常启动 NN2,将 NN2 作为 Standby 节点
#5.以 -rollback 参数启动所有的 DataNode

上一篇文章:HDFS HA 高可用集群搭建详细图文教程_Stars.Sky的博客-CSDN博客 

猜你喜欢

转载自blog.csdn.net/weixin_46560589/article/details/132674027