升级cdh4到cdh5

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

本文主要记录从CDH4升级到CDH5的过程和遇到的问题,当然本文同样适用于CDH5低版本向最新版本的升级。

1. 不兼容的变化

升级前,需要注意 cdh5 有哪些不兼容的变化,具体请参考:Apache Hadoop Incompatible Changes

2. 升级过程

2.1. 备份数据和停止所有服务

2.1.1 让 namenode 进入安全模式

在NameNode或者配置了 HA 中的 active NameNode上运行下面命令:

$ sudo -u hdfs hdfs dfsadmin -safemode enter

保存 fsimage:

$ sudo -u hdfs hdfs dfsadmin -saveNamespace

如果使用了kerberos,则先获取hdfs用户凭证,再执行下面代码:

$ kinit -k -t /etc/hadoop/conf/hdfs.keytab hdfs/cdh1@JAVACHEN.COM
$ hdfs dfsadmin -safemode enter
$ hdfs dfsadmin -saveNamespace

2.1.2 备份配置文件、数据库和其他重要文件

根据你安装的cdh组件,可能需要备份的配置文件包括:

/etc/hadoop/conf
/etc/hive/conf
/etc/hbase/conf
/etc/zookeeper/conf
/etc/impala/conf
/etc/spark/conf
/etc/sentry/conf
/etc/default/impala

2.1.3 停止所有服务

在每个节点上运行:

for x in `cd /etc/init.d ; ls hadoop-*` ; do sudo service $x stop ; done
for x in `cd /etc/init.d ; ls hbase-*` ; do sudo service $x stop ; done
for x in `cd /etc/init.d ; ls hive-*` ; do sudo service $x stop ; done
for x in `cd /etc/init.d ; ls zookeeper-*` ; do sudo service $x stop ; done
for x in `cd /etc/init.d ; ls hadoop-*` ; do sudo service $x stop ; done
for x in `cd /etc/init.d ; ls impala-*` ; do sudo service $x stop ; done

2.1.4 在每个节点上查看进程

$ ps -aef | grep java

2.2. 备份 hdfs 元数据(可选,防止在操作过程中对数据的误操作)

a,查找本地配置的文件目录(属性名为 dfs.name.dir 或者 dfs.namenode.name.dir或者hadoop.tmp.dir 

grep -C1 hadoop.tmp.dir /etc/hadoop/conf/hdfs-site.xml

#或者
grep -C1 dfs.namenode.name.dir /etc/hadoop/conf/hdfs-site.xml

通过上面的命令,可以看到类似以下信息:

<property>
<name>hadoop.tmp.dir</name>
<value>/data/dfs/nn</value>
</property>

b,对hdfs数据进行备份

cd /data/dfs/nn
tar -cvf /root/nn_backup_data.tar .

2.3. 更新 yum 源

如果你使用的是官方的远程yum源,则下载 cloudera-cdh5.repo 文件到 /etc/yum.repos.d 目录:

$ wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo -P /etc/yum.repos.d

如果你使用本地yum,则需要从 http://archive-primary.cloudera.com/cdh5/repo-as-tarball 下载最新的压缩包文件,然后解压到对于目录,以 CDH5.4 版本为例:

$ cd /var/ftp/pub
$ rm -rf cdh
$ wget http://archive-primary.cloudera.com/cdh5/repo-as-tarball/5.4.0/cdh5.4.0-centos6.tar.gz
$ tar zxvf cdh5.4.0-centos6.tar.gz

然后,在 /etc/yum.repos.d 目录创建一个 repos 文件,指向本地yum源即可,详细过程请自行百度。

2.4. 升级组件

在所有节点上运行:

$ sudo yum update hadoop* hbase* hive* zookeeper* bigtop* impala* spark* llama* lzo* sqoop* parquet* sentry* avro* mahout* -y

启动ZooKeeper集群,如果配置了 HA,则在原来的所有 Journal Nodes 上启动 hadoop-hdfs-journalnode:

# 在安装zookeeper-server的节点上运行
$ /etc/init.d/zookeeper-server start

# 在安装zkfc的节点上运行
$ /etc/init.d/hadoop-hdfs-zkfc

# 在安装journalnode的节点上运行
$ /etc/init.d/hadoop-hdfs-journalnode start

2.5. 更新 hdfs 元数据

在NameNode或者配置了 HA 中的 active NameNode上运行下面命令:

$ sudo service hadoop-hdfs-namenode upgrade

查看日志,检查是否完成升级,例如查看日志中是否出现/var/lib/hadoop-hdfs/cache/hadoop/dfs/<name> is complete

$ sudo tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode-<hostname>.log

如果配置了 HA,在另一个 NameNode 节点上运行:

# 输入 Y
$ sudo -u hdfs hdfs namenode -bootstrapStandby
=====================================================
Re-format filesystem in Storage Directory /data/dfs/nn ? (Y or N)
$ sudo service hadoop-hdfs-namenode start

启动所有的 DataNode:

$ sudo service hadoop-hdfs-datanode start

打开 web 界面查看 hdfs 文件是否都存在。

待集群稳定运行一段时间,可以完成升级:

$ sudo -u hdfs hadoop dfsadmin -finalizeUpgrade

2.6. 更新 YARN

更新 YARN 需要注意以下节点:

  • yarn-site.xml 中做如下改变:
    • yarn.nodemanager.aux-services的值从mapreduce.shuffle 修改为 mapreduce_shuffle
    • yarn.nodemanager.aux-services.mapreduce.shuffle.class 改名为 yarn.nodemanager.aux-services.mapreduce_shuffle.class
    • yarn.resourcemanager.resourcemanager.connect.max.wait.secs 修改为 yarn.resourcemanager.connect.max-wait.secs
    • yarn.resourcemanager.resourcemanager.connect.retry_interval.secs 修改为 yarn.resourcemanager.connect.retry-interval.secs
  • yarn.resourcemanager.am. max-retries 修改为 yarn.resourcemanager.am.max-attempts
  • yarn.application.classpath 中的环境变量 YARN_HOME 属性修改为 HADOOP_YARN_HOME

然后在启动 YARN 的相关服务。

2.7. 更新 HBase

升级 HBase 之前,先启动 zookeeper。

在启动hbase-master进程和hbase-regionserver进程之前,更新 HBase:

$ sudo -u hdfs hbase upgrade -execute

如果你使用了 phoenix,则请删除 HBase lib 目录下对应的 phoenix 的 jar 包。

启动 HBase:

$ service hbase-master start
$ service hbase-regionserver start

2.8. 更新 hive

在启动hive之前,进入 /usr/lib/hive/bin 执行下面命令升级元数据(这里元数据使用的是postgres数据库):

$ cd /usr/lib/hive/bin
# ./schematool -dbType 数据库类型 -upgradeSchemaFrom 版本号
# 升级之前 hive 版本为 0.14.0,下面命令会运行  /usr/lib/hive/scripts/metastore/upgrade/postgres/upgrade-0.14.0-to-1.1.0.postgres.sql
$ ./schematool -dbType postgres -upgradeSchemaFrom 0.14.0

确认 /etc/hive/conf/hive-site.xml 和 /etc/hive/conf/hive-env.sh 是否需要修改,例如 /etc/hive/conf/hive-env.sh 配置了如下参数,需要修改到 cdh-5.2 对应的版本:

# 请修改到 cdh5.4对应的 jar 包
$ export HIVE_AUX_JARS_PATH=/usr/lib/hive/lib/hive-contrib-1.1.0-cdh5.4.0.jar

修改完之后,请同步到其他节点。

然后启动 hive 服务:

$ service hive-metastore start
$ service hive-server2 start

2.9 更新Sentry

如果你从 CDH 5.2.0 以前的版本更新到 CDH 5.2.0 以后的版本,请更新sentry的元数据库:

$ bin/sentry --command schema-tool --conffile <sentry-site.xml> --dbType <db-type> --upgradeSchema
相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
分布式计算 资源调度 安全
CentOS7下Hadoop3.2.1的安装与部署(单机模式)
CentOS7下Hadoop3.2.1的安装与部署(单机模式)
136 0
|
9月前
|
存储 分布式计算 Hadoop
如何升级CDH7.1.1到CDH7.1.3
如何升级CDH7.1.1到CDH7.1.3
129 1
|
9月前
|
存储 安全 关系型数据库
安装CDH7.1.1
安装CDH7.1.1
202 0
|
9月前
|
资源调度 关系型数据库 数据库
如何卸载CDH7.1.1
如何卸载CDH7.1.1
|
SQL 关系型数据库 MySQL
Centos7在线安装CDH6
Centos7在线安装CDH6
495 0
Centos7在线安装CDH6
|
SQL Java 定位技术
CDH6.2版本 HiveUDF 应用测试说明
CDH6.2版本 HiveUDF 应用测试说明
883 0
CDH6.2版本 HiveUDF 应用测试说明
|
SQL MySQL Java
CentOS7下安装CDH,clouderamanager,hadoop
一、实验背景 我们是四台电脑一起搭建Hadoop集群 A,B,C,D四个人个有一台电脑,分别在各自的电脑上安装虚拟机,虚拟机装centOS7。(我们建议主机namenode内存大一点8g,硬盘最好100g以上,其余节点2g,50g即可,下文会阐述原因) 系统:VMware下的centOS7 jdk:1.
2116 0
|
SQL 分布式计算 HIVE
0002-CENTOS7.2安装CDH5.10和Kudu1.2(二)
5 Kudu安装 CDH从5.10开始,打包集成Kudu1.2,并且Cloudera正式提供支持。这个版本开始Kudu的安装较之前要简单很多,省去了Impala_Kudu,安装完Kudu,Impala即可直接操作Kudu。
1355 0