Hadoop版本升级步骤(2.6.1->2.7.1) 2015-10-20 21:00

思路

备份NameNode和JournalNode的元数据,使用新版本覆盖旧版本数据,然后执行start-dfs.sh -upgrade进行升级操作。

升级过程

下载新版本

各个节点上操作。

cd /opt
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz

停止旧版本服务

只在ctrl节点上操作.

stop-yarn.sh
stop-dfs.sh

备份旧版本的NameNode数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#备份ctrl节点上的HDFS元数据
mkdir /opt/backup
#NameNode数据所在的目录
cd /opt/dfs/name
tar -zcvf /opt/backup/backup_namenode_data_ctrl.tar.gz *

#备份data01节点上的HDFS元数据
mkdir /opt/backup
#NameNode数据所在的目录
cd /opt/dfs/name
tar -zcvf /opt/backup/backup_namenode_data_data01.tar.gz *
#JournalNode数据所在的目录
cd /opt/dfs/journal
tar -zcvf /opt/backup/backup_journalnode_data_data01.tar.gz *

#备份data02节点上的HDFS元数据
mkdir /opt/backup
#NameNode数据所在的目录
cd /opt/dfs/name
tar -zcvf /opt/backup/backup_namenode_data_data02.tar.gz *
#JournalNode数据所在的目录
cd /opt/hadoop/dfs/journal
tar -zcvf /opt/backup/backup_journalnode_data_data02.tar.gz *

#备份data03节点上的HDFS元数据
mkdir /opt/backup
#NameNode数据所在的目录
cd /opt/dfs/name
tar -zcvf /opt/backup/backup_namenode_data_data03.tar.gz *
#JournalNode数据所在的目录
cd /opt/hadoop/dfs/journal
tar -zcvf /opt/backup/backup_journalnode_data_data03.tar.gz *

在新目录安装新版本

所有节点操作。

1
2
3
4
cd /opt
tar -zxvf hadoop-2.7.1.tar.gz
rm -f hadoop
ln -s hadoop-2.7.1 hadoop

将旧版本的配置文件覆盖新版本

所有节点操作。

cd /opt
unalias cp
cp -f hadoop-2.6.1/etc/hadoop/hadoop-env.sh hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/hdfs-site.xml hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/yarn-site.xml hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/slaves hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/core-site.xml hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/mapred-site.xml hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/namenode_cmt.xml hadoop/etc/hadoop/
cp -f hadoop-2.6.1/etc/hadoop/capacity-scheduler.xml hadoop/etc/hadoop/

执行升级

在新版本中(修改core-site.xml中的fs.defaultFS为两个NameNode分别执行):

start-dfs.sh -upgrade

如果升级没有问题,通过如下命令提交升级:

hdfs dfsadmin -finalizeUpgrade

注意:

  1. 在使用联邦场景下,此命令只针对当前默认的fs.defaultFS对应用NameNode执行升级确认操作。因此,需要修改core-site.xml中的fs.defaultFS为另一个NameNode再执行一次相同的操作。
  2. 如果期间NameNode无法正常启动,查看日志进行处理。有可能需要执行如下命令进行修复:
hadoop-daemon.sh start namenode -rollingUpgrade started

经验

升级过程中,需要留意各个节点的NameNode是否正常启动。如果不正常,通过NameNode的启动日志进行定位。

参考文档

  1. Hadoop版本升级步骤(2.4.1->2.6.1)
Tags: #HDFS    Post on Hadoop