说明
HDFS滚动升级允许升级各个HDFS的守护进程。namenode和datanode和journalnode都可以独立升级。
升级
HDFS支持HA和ware compatibility.这样可以让HDFS不停机升级。如果有新特性导致新旧版本不能通用,那么可以使用如下步骤进行升级。
- 关闭新功能
- 升级集群
- 开启新功能
滚动升级只是在2.4.0以后可用。
不停机升级
只考虑NN和DN,ZK和JN相对稳定。升级ZK和JN时候可能导致集群停机。
升级非联邦集群
NN1和NN2,NN1是Active,NN2是standby
- prepare Rolling update
hdfs dfsadmin -rollingUpdate prepare
hdfs dfsadmin -rollingUpdate query
注意Proceed with rolling upgrade:
这里面执行可以生成fsimage,如下所示
-rw-r–r-- 1 root root 73K Mar 20 23:00 fsimage_rollback_0000000000004068733
- 升级active和standby
-
关闭standby
-
启动NN2作为Standby 增加命令 -rollingUpgrade started
-
NN1 failover
-
关闭NN1
-
启动NN1,增加命令 -rollingUpgrade started
- 升级DNs
选择一小部分数据节点子集(比如说一个机架,多副本不能同时下线)
- 关闭DN
hdfs dfsadmin -shutdownDatanode <DATANODE:IPC> upgrade
- 检查DN是否已经停止
- 更新和启动Datanode
- 并行的处理上述步骤
- 确保所有的datanode都升级
- 完成滚动升级
hdfs dfsadmin -rollingUpgrade finalize
升级联邦集群
升级联邦集群和非联邦类似,只不过需要在每一个NS里面执行。
停机升级
非HA集群,是一定要停机的。但是数据节点可以滚动升级。
基本上和HA集群类似,但是第二步升级active和standby需要改成如下步骤。
- 关闭SNN
- 关闭和升级 NN
- 启动NN -rollingUpgrade start
- 升级启动SNN
降级
降级的意思是集群恢复到升级之前的状态。但是hdfs的create或者delete的文件也会被create或者delete。
layoutVersion是为了确保新特性有没有应用,只有NN和DN都没有使用新特性,才可以降级。
降级步骤:
- 和升级反着来,逐批次降级dn
hdfs dfsamin -shutdownDatanode \<HOST:IPC> upgrade
降级和重启datanode
- 降级Active和Standby
- 完成降级
hdfs dfsadmin -rollingUpgrade finalize
回滚
回滚的话数据会恢复,需要停机
- 关闭NN和DN
- 所有还原pre-upgrade。
namenode 和datanode上都有标记,dn上有RollingUpgrade
- 启动NN,增加“-rollingUpgrade rollback"
- 正常启动standby
- 启动dn,指定“-rollback”
命令
DFSAdmin命令
dfsadmin命令
hdfs dfsadmin -rollingUpgrade <query|prepare|finalize>
检查datanode状态
hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
关闭datanode节点
dfsadmin -shutdownDatanode
NN命令
NN启动或者回滚
hdfs namenode -rollingUpgrade <rollback|started>