下面MD的文件 感谢老源给的文档,再次记录下


#Hadoop-HA版本升级

<!-- TOC -->

[版本说明](#)
[节点构成](#)
[流程说明](#)
    - [Step0 关闭YARN](#step0-yarn)
    - [Step1 NameNode准备滚动升级](#step1-namenode)
    - [Step2 NameNode升级](#step2-namenode)
    - [Step3 切换主从节点](#step3)
    - [Step4 同步NameNode升级](#step4-namenode)
    - [Step5 单台JournalNode更新](#step5-journalnode)
    - [Step6 其他JournalNode更新](#step6-journalnode)
    - [Step7 单台DataNode更新](#step7-datanode)
    - [Step8 其他Datanode更新](#step8-datanode)
    - [Step9 完成HDFS升级](#step9-hdfs)
    - [Step10 验证更新状态](#step10)
[参考文档](#)

<!-- /TOC -->

## 版本说明
运行版本: Hadoop-2.6.0-cdh-5.10.0  
升级版本: Hadoop-2.7.6-local-build

## 节点构成
namenode: nn1(active), nn2(standby)  
datanode: dn1, dn2, dn3  
resourcemanager: rm1(active), rm2(standby)  
nodemanager: nm1, nm2, nm3  
journalnode: jn1, jn2, jn3  
zkfc:zk1, zk2  
namenode/zkfc/resourcemanager节点在相同主机  
datanode/nodemanager/journalnode在相同主机  

## 流程说明
HDFS升级顺序: namenode->journalnode->datanode  
YARN升级顺序: 无
HDFS和YARN间升级顺序: 无要求

### Step0 关闭YARN
YARN升级只需要简单文件替换即可,故升级过程中直接关闭YARN
> ${HADOOP_HOME}/sbin/stop-yarn.sh  

### Step1 NameNode准备滚动升级
nn2执行
> ${HADOOP_HOME}/bin/hdfs dfsadmin -rollingUpgrade prepare  

等待rolling文件生成,通过命令查询进度:
> ${HADOOP_HOME}/bin/hdfs dfsadmin -rollingUpgrade query  

当准备完成后,WEB页面会有相应提示,query命令也会返回相应结果

### Step2 NameNode升级
结束运行中的namenode
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh stop namenode  

结束运行中的zkfc
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh stop zkfc

修改${HADOOP_HOME}到升级目录

以更新方式启动namenode
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode -rollingUpgrade started

启动zkfc
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh start zkfc

### Step3 切换主从节点
将已升级的nn2切换为active节点
> ${HADOOP_HOME}/bin/hdfs haadmin -failover nn1 nn2

### Step4 同步NameNode升级
对nn1节点执行Step1~Step2的操作,完成升级准备  
再次切换主从节点,还原正常状态
> ${HADOOP_HOME}/bin/hdfs haadmin -failover nn2 nn1


### Step5 单台JournalNode更新
jn1关闭运行中的journalnode节点
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh stop journalnode

修改${HADOOP_HOME}到升级目录

再次启动jn1
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh start journalnode

观察新的jn1节点日志同步状态,当日期同步完成后表明单jn节点更新成功

### Step6 其他JournalNode更新
其他jn节点更新方法参考Step5即可  
必须jn节点必须手动逐个更新,批量更新可能导致集群挂掉的情况  

### Step7 单台DataNode更新
通过下面的命令关闭datanode节点
> ${HADOOP_HOME}/bin/hdfs dfsadmin -shutdownDatanode ${HOSTNAME}:50020 upgrade

修改${HADOOP_HOME}到升级目录

再次启动datanode
> ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode


### Step8 其他Datanode更新
datanode可以批量更新,方法与Step7相同

### Step9 完成HDFS升级
在nn1和nn2上执行下面的命令完成升级操作
> ${HADOOP_HOME}/bin/hdfs dfsadmin -rollingUpgrade finalize

命令执行后,50070管理界面上相应的rolling提示将会消失

### Step10 验证更新状态
关闭集群所有节点并再次启动
> ${HADOOP_HOME}/sbin/start-dfs.sh  

> ${HADOOP_HOME}/sbin/start-yarn.sh

通过fsck检查整个集群文件状态
> ${HADOOP_HOME}/bin/hadoop fsck /

## 参考文档
https://blog.csdn.net/seohyunchyl/article/details/52624938


乐享:知识积累,快乐无限。