最近对CDH进行升级,从5.4.8升级到5.7.0,主要想升级spark和hbase。
What’s New In CDH 5.7.x
详细信息参考What’s New In CDH 5.7.x
- 操作系统支持 RHEL/CentOS 6.6, 6.7, 7.1, 7.2
- JDK版本必须1.7或以上。
- Spark升级到1.6.0,支持hive on spark
- 各服务版本:
Component | Package Version |
---|---|
Apache Hadoop | hadoop-2.6.0+cdh5.7.0+1280 |
HBase | hbase-1.2.0+cdh5.7.0+129 |
Apache Hive | hive-1.1.0+cdh5.7.0+522 |
Hue | hue-3.9.0+cdh5.7.0+1759 |
Apache Impala | impala-2.5.0+cdh5.7.0+0 |
Apache Oozie | oozie-4.1.0+cdh5.7.0+267 |
Apache Sentry | sentry-1.5.1+cdh5.7.0+184 |
Apache Spark | spark-1.6.0+cdh5.7.0+180 |
Apache Sqoop | sqoop-1.4.6+cdh5.7.0+56 |
Apache Sqoop2 | sqoop2-1.99.5+cdh5.7.0+38 |
Zookeeper | zookeeper-3.4.5+cdh5.7.0+94 |
更多服务的版本和下载地址参考: CDH 5.7.x Packaging and Tarball Information
CDH升级
数据库备份
cloudera manager数据备份
cloudera manager使用postgres来存储,数据库信息可以在/etc/cloudera-scm-server/db.properties中找到。
备份命令:
|
|
服务数据备份
使用的是mysql,涉及的库有hive
, hue
, sentry
, oozie
, sqoop
mysqldump -h vlnx107010 -uroot -p hive > /data/backup/hive-backup.$(date +%Y%m%d).sql
mysqldump -h vlnx107010 -uroot -p hue > /data/backup/hue-backup.$(date +%Y%m%d).sql
mysqldump -h vlnx107010 -uroot -p sentry > /data/backup/sentry-backup.$(date +%Y%m%d).sql
mysqldump -h vlnx107010 -uroot -p oozie_oozie_server > /data/backup/oozie-backup.$(date +%Y%m%d).sql
mysqldump -h vlnx107010 -uroot -p sqoop > /data/backup/sqoop-backup.$(date +%Y%m%d).sql
更新cloudera manager server
使用packages方式更新。
停止cloudera manager server, database, agent
- 停止正在运行的命令
停止cloudera-manager服务
1$ sudo service cloudera-scm-server stop
使用内嵌的PostgreSQL数据库的话,停止此服务
1$ sudo service cloudera-scm-server-db stop==Important:== If you are not running the embedded database service and you attempt to stop it, you receive a message indicating that the service cannot be found. If instead you get a message that the shutdown failed, the embedded database is still running, probably because services are connected to the Hive metastore. If the database shutdown fails due to connected services, issue the following command:
RHEL-compatible 7 and higher:12$ sudo service cloudera-scm-server-db next_stop_fast$ sudo service cloudera-scm-server-db stopAll other Linux distributions:
1sudo service cloudera-scm-server-db fast_stop
停止cloudera-agent服务
1$ sudo service cloudera-scm-agent stop
设置repo
在线升级,使用cloudera源
如果网络速度比较快,可以直接新建cloudera-manager.repo
:
|
|
搭建本地源
如果访问cloudera源不太稳定,可以搭建本地的repo源。
安装vsftp
使用vsftp作为ftp服务器,配置文件在
/etc/vsftpd/
下,ftp路径在/var/ftp/
下。12$ yum install vsftpd$ service vsftpd start下载rpm包和repodata
新建目录
/var/ftp/pub/cloudera-repo
作为repo源目录,从https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/
按下载所需的rpm包和repodata目录,完成后目录结构如下:1234567891011121314151617$ tree /var/ftp/pub/cloudera-repo//var/ftp/pub/cloudera-repo/├── repodata│ ├── filelists.xml.gz│ ├── filelists.xml.gz.asc│ ├── other.xml.gz│ ├── other.xml.gz.asc│ ├── primary.xml.gz│ ├── primary.xml.gz.asc│ ├── repomd.xml│ └── repomd.xml.asc└── RPMS└── x86_64├── cloudera-manager-agent-5.7.0-1.cm570.p0.76.el6.x86_64.rpm├── cloudera-manager-daemons-5.7.0-1.cm570.p0.76.el6.x86_64.rpm├── cloudera-manager-server-5.7.0-1.cm570.p0.76.el6.x86_64.rpm└── cloudera-manager-server-db-2-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
新建本地repo
cloudera-manager.repo
如下:1234[cloudera-manager]name = Cloudera Manager, Version 5.7.0baseurl = ftp://${local-repo-ip}/pub/cloudera-repogpgcheck = 0- 如果手动升级各机器的cloudera-manager-agent,需要将cloudera-manager.repo更新到所有节点上
- 如果使用cloudera升级各机器的cloudera-manager-agent,在升级时注意选择
Custom Repository
,填写repository地址为ftp://${local-repo-ip}/pub/cloudera-repo
。
进行升级
|
|
重启cloudera manager服务
|
|
更新cloudera manager agent
==Important:== All hosts in the cluster must have access to the Internet if you plan to use archive.cloudera.com as the source for installation files. If you do not have Internet access, create a custom repository.
以下两种升级任选一种。
使用cloudera进行升级
进入cloudera manager后,会自动弹出升级页面,选择Yes, I would like to upgrade the Cloudera Manager Agent packages now
,然后一步步进行。
在选择Cloudera Manager Agent Release时,有两种选择
- 如果进行在线升级,选择
Matched Release for this Cloudera Manager Server
,这样会直接从https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/
进行更新。 - 如果自己下载了rpm包,并建立了本地repo源,选择
Custom Repository
,然后填写本地repo源地址。
这两种方式都会在每台机器/etc/yum.repos.d/
目录下生成cloudera-manager.repo
,不过其中的baseurl
参数不同。
手动进行更新
- 在每台机器上添加
cloudera-manager.repo
并清理yum cache,yum clean all
。 - 停止cloudera-scm-agent服务:
service cloudera-scm-agent stop
。 - 更新cloudera-manager-agent:
yum upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-server-db-2 cloudera-manager-agent
。 - 启动cloudera-scm-agent服务:
service cloudera-scm-agent start
。
验证CDH升级是否成功
在页面上hosts
页面,点击Inspect All Hosts
,检测完成后可以查看结果,能够比较详细的查看各机器情况。
服务升级
CDH升级后,更要重的是对CDH管理的服务进行升级,这里使用parcels进行升级。
创建临时远程仓库
- 新建目录
/data/cloudera-parcel-server
下载CDH parcel和manifest.json
12$ wget http://archive.cloudera.com/cdh5/parcels/5/CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel$ wget http://archive.cloudera.com/cdh5/parcels/5/manifest.json
下载kafka parcel和manifest.json
12$ wget http://archive.cloudera.com/kafka/parcels/2/KAFKA-2.0.1-1.2.0.1.p0.5-el6.parcel$ wget http://archive.cloudera.com/kafka/parcels/2/manifest.json下载gplextras5和manifest.json
12$ wget http://archive.cloudera.com/gplextras5/parcels/5/GPLEXTRAS-5.6.1-1.cdh5.6.1.p0.5-el6.parcel$ wget http://archive.cloudera.com/gplextras5/parcels/5/manifest.json
整体目录结构如下:
12345678910111213$ tree /data/cloudera-parcel-server//data/cloudera-parcel-server/├── cdh│ ├── CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel│ └── manifest.json├── gplextras│ ├── GPLEXTRAS-5.6.1-1.cdh5.6.1.p0.5-el6.parcel│ └── manifest.json└── kafka├── KAFKA-2.0.1-1.2.0.1.p0.5-el6.parcel└── manifest.json3 directories, 6 files启动一个server
1$ python -m SimpleHTTPServer 8080
在浏览器中打开链接查看是否启动成功,http://{http-server-ip}:8080
,成功后可以在parcels的配置Remote Parcel Repository URLs
中添加相关的parcel地址:
http://{http-server-ip}:8080/cdh/
http://{http-server-ip}:8080/kafka/
http://{http-server-ip}:8080/gplextras/
CDH Parcel(服务)升级
参考Upgrading to CDH 5.7 Using Parcels
- 在
Hosts -> Parcels
处设置上一个步骤中的parcel临时远程仓库 - 在首页cluster名右侧小三角处点击『Upgrade Cluster』,仔细阅读升级前的准备,并提前准备好
- 在节点检测完后,选择
Let me upgrade the cluster
,手动进行重启服务以避免服务不可用。 - 升级Oozie ShareLib,在Oozie服务页面,点击
Actions > Install Oozie ShareLib
。 - 升级Sqoop2,在Sqoop2页面,点击
Actions > Upgrade Sqoop
。 - 升级Spark,在spark页面,点击
Actions > Install Spark JAR
和Actions > Create Spark History Log Dir
。 - 手动将服务一个个重启,可以在每个服务的
Instances
Tab页,一个实例一个实例的重启,这样可以避免服务不可用。 - 重启完后,运行
Deploy Client Configuration
。 - 在parcels页面可以删除之前的parcel。
另外的途径可以在Hosts > parcels
页面手动进行Distribute
和Active
,然后进行上面的步骤4–步骤9。
KAFKA Parcel升级
在Hosts > parcels
页面手动对Kafka Parcel进行Distribute
和Active
,然后对Kafka Broker一台台进行重启,确定没问题后可以删除旧的parcel。
GPLEXTRAS Parcel升级(添加对lzo的支持)
参考Configuring Services to Use the GPL Extras Parcel
- 在
Hosts > parcels
页面手动对gplextras parcel进行Distribute
和Active
- HDFS服务中修改配置
Compression Codecs
,添加com.hadoop.compression.lzo.LzoCodec
和com.hadoop.compression.lzo.LzopCodec
,重启HDFS。 - 在每台Oozie Server上建立hadoop-lzo.jar的软链接,
ln -sf /opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/hadoop-lzo.jar /var/lib/ooziehadoop-lzo.jar
,重启Oozie。 - Sqoop2服务中修改配置
Sqoop Service Environment Advanced Configuration Snippet
,添加HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/*
和JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/native
,重启Sqoop2。 - 重启其他需要重启的服务。
- 运行
Deploy Client Configuration
。
CDH Client(Gateway)升级
在升级后,发现各Client中的命令引用没有更新,需要手动将/etc/alternatives/
目录下CDH相关更新为最新。
以spark-shell
为例。
- 执行
which spark-shell
,发现指向/usr/bin/spark-shell
- 执行
ls -l /usr/bin/spark-shell
,发现是个软链接并指向了/etc/alternatives/spark-shell
- 执行
ls -l /etc/alternatives/spark-shell
,发现是个软链接并指向了/opt/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/bin/spark-shell
,明显还指向升级前的版本。 - 执行
ln -sf /opt/cloudera/parcels/CDH/bin/spark-shell /etc/alternatives/spark-shell
将其指向最新的版本。
可以使用shell脚本批量将/etc/alternatives
下CDH相关软链接指向最新的版本。
参考
- Upgrading Cloudera Manager 5 to the Latest Cloudera Manager: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ag_upgrade_cm5.html
- Upgrading CDH and Managed Services Using Cloudera Manager: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_mc_upgrading_cdh.html
- Upgrading to CDH 5.7 Using Parcels: http://www.cloudera.com/documentation/enterprise/latest/topics/install_upgrade_to_cdh57_parcels.html
- Creating a Temporary Remote Repository: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_create_local_parcel_repo.html
- postgresql常用命令: http://blog.chinaunix.net/uid-26642180-id-3485465.html
- Running Hive on Spark: http://www.cloudera.com/documentation/enterprise/latest/topics/admin_hos_oview.html
- Configuring Services to Use the GPL Extras Parcel: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_mc_gpl_extras.html
- CDH 5.7.0 Properties: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_props_cdh570.html