1.介绍
HDFS的滚动升级可以只升级独立的守护进程,比如可以独立升级datanode、namenode、journalnode,这些进程都可以不相互依赖来升级;hadoop2.x开始支持HDFS的HA,也正是HA,集群可以不停机来滚动升级,当然前提是先不要升级journalnode和zookeeper,下面描述一下非联邦HA升级的过程。
2.滚动升级
2.1备份
首先,先备份最新的dfs.namenode.name.dir下的镜像和编辑日志文件,防止意外;
2.2升级
1).配置好新版本hadoop的配置和环境变量;
2).准备升级
1.在active namenode节点以新版本环境变量运行"hdfs dfsadmin -rollingUpgrade prepare",创建备份回滚镜像;
2. 然后再以新版本环境变量运行"hdfs dfsadmin -rollingUpgrade query"来检查一下回滚镜像状态,等待和继续执行这个命令,直到出现"Proceed with rolling upgrade",操作才可以再往下执行。
3).升级active 和standby namenode
1.旧环境先停掉standby namenode,hadoop-daemon.sh stop namenode直接停掉,然后用升级的新的hadoop环境 运行hadoop-daemon.sh start namenode -rollingUpgrade started
2.切主备节点,让新升级standby的namenode变为active,
4).升级datanode
执行"hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade" 来停掉指定的datanode,比如hdfs dfsadmin -shutdownDatanode hostname-1:50020 upgrade,运行"hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>" 来确认datanode已经停掉,在对应的节点升级hadoop变更环境后,运行hadoop-daemon.sh start datanode启动进程,其他节点重复上面的操作即可升级完集群的所有的datanode;
3.完成升级
"hdfs dfsadmin -rollingUpgrade finalize"执行该命令完成升级;
4.其他
其他联邦或者非HA等升级方式可以查看官网来进行,官网还是比较详细的