Hadoop 3.1.4升级为3.3.4
目录
非联邦滚动升级
一、准备滚动升级
1.运行命令“hdfs dfsadmin -rollingUpgrade prepare”,为滚动创建一个FsImage。
hdfs dfsadmin -rollingUpgrade prepare
2.运行命令“hdfs dfsadmin -rollingUpgrade query”,检查滚动Image的状态。等一会接着重新运行这个命令直到“Proceed with rolling upgrade”消息出现。
hdfs dfsadmin -rollingUpgrade query
二、升级Active和Standby NNs
1.关闭NN2,然后升级NN2(替换为新版本hadoop)
hdfs --daemon stop namenode
2.用“-rollingUpgrade started”选项,启动NN2作为StandbyNameNode。
hdfs --daemon start namenode -rollingUpgrade started
3.从NN1故障转移到NN2,以使NN2处于Active,NN1处于Standby。
hdfs haadmin -getServiceState nn1
注意:此处的nn1为在hdfs-site.xml中配置的namenode服务的名称。
确定要转为active的namenode的id,这里将namenode1设为active,使用命令行工具进行状态切换:
hdfs haadmin -failover --forcefence --forceactive nn1 nn2
如果手动命令切换不成功,可以命令停止NN1,观察是否自动切换。
4.关闭NN1,然后升级NN1(替换为新版本hadoop)
hdfs --daemon stop namenode
5.用"rollingUpgrade started”选项,启动NN1作为Standby“。
hdfs --daemon start namenode -rollingUpgrade started
三、升级DNs
代码如下(示例):
1.选择一小部分DataNode(所有的DataNode都在一个特定的机架上)。
2.运行命令“hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade”,关闭选中的DataNode
hdfs dfsadmin -shutdownDatanode bigdatanode03:50020 upgrade
这种方式如果不行,直接使用命令停止
hdfs --daemon stop datanode
3.运行命令“hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>”检查等待DataNode关闭
4.升级和重新启动DataNode(替换为新版本hadoop)
hdfs --daemon start datanode
5.在所有选中的机器上运行上边的步骤,一次选中的DataNode可以并行操作。
6.重新运行上边的步骤直到集群中的所有DataNode被升级。
四、结束滚动升级
1.运行“hdfs dfsadmin -rollingUpgrade finalize”结束滚动操作。
观察namenode日志无异常,且fsimage和editlog同步正常,再结束滚动操作。
注意:namenode是否在安全模式 hdfs dfsadmin -safemode leave
非HA的集群升级
一、准备滚动升级
0.进入安全模式
hdfs dfsadmin -safemode enter
解压并复制配置文件:
tar -zxvf hadoop-3.3.4.tar.gz
进入etc/hadoop目录
复制升级前版本配置文件,到升级版本的配置文件中
core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml workers yarn-env.sh yarn-site.xml capacity-scheduler.xml fair-scheduler.xml
进入sbin目录
复制运行命令文件到升级版本中
start-dfs.sh start-yarn.sh stop-dfs.sh stop-yarn.sh
1.运行命令“hdfs dfsadmin -rollingUpgrade prepare”,为滚动创建一个FsImage。
hdfs dfsadmin -rollingUpgrade prepare
2.运行命令“hdfs dfsadmin -rollingUpgrade query”,检查滚动Image的状态。等一会接着重新运行这个命令直到“Proceed with rolling upgrade”消息出现。
hdfs dfsadmin -rollingUpgrade query
二、升级NN和SNN
1.关闭SNN
hdfs --daemon stop secondarynamenode
2.关闭和升级NN
hdfs --daemon stop namenode
3.启动NN使用“-rollingUpgrade started”选项。
hdfs --daemon start namenode -rollingUpgrade started
4.升级和重启SNN。
hdfs --daemon start secondarynamenode
三、升级DNs
1.选择一小部分DataNode(所有的DataNode都在一个特定的机架上)。
2.运行命令“hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade”,关闭选中的DataNode
hdfs dfsadmin -shutdownDatanode cdh1:50020 upgrade
3.运行命令“hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>”检查等待DataNode关闭
4.升级和重新启动DataNode
5.在所有选中的机器上运行上边的步骤,一次选中的DataNode可以并行操作。
6.重新运行上边的步骤直到集群中的所有DataNode被升级。
四、结束滚动升级
1.运行“hdfs dfsadmin -rollingUpgrade finalize”结束滚动操作。
hdfs dfsadmin -rollingUpgrade finalize
注意:namenode是否在安全模式 hdfs dfsadmin -safemode leave
问题和方案
问题1:开启simple认证导致,fsimage和editlog同步异常。
Caused by: java.util.concurrent.ExecutionException: org.apache.hadoop.hdfs.server.common.HttpPutFailedException: Image uploading failed, status: 401, url: http://xxx:9870/imagetransfer?imageFile=IMAGE&txid=115964721&storageInfo, message: Authentication required
方案:关闭以下simple认证,异常解决。
hadoop.http.authentication.simple.anonymous.allowed