CDH cm节点高可用方案

来源:互联网 发布:编程语言选择 编辑:程序博客网 时间:2024/05/22 17:30

       近期因工作需要,对CDHcm管理节点的高可用做了些相关的测试,测试大概分2部分。具体如下,希望有兴趣的同学可以多交流学习。

  1. cm节点关于postgres数据库的备用节点高可用。

  2. cm节点关于mysql数据库的备用节点高可用。


测试需求:因线上cm管理节点是单点,一旦cm管理节点的服务器宕机,那么整个CDH集群的管理就受到影响。主要是不方便管理。如果熟悉相关的命令,则可以用命令管理。

测试目的:搭建一套备用的cm管理节点,并能顺利的接管主cm节点的相关服务。

     测试 1.  cm管理节点以mysql为主的。这里测试CM版本为5.3.3

 测试步骤:

1. 选择一台要做备机的服务器,安装cm管理节点。           

完成如下5个文件的准备:
cloudera-manager-el6-cm5.3.3_x86_64.tar
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha
manifest.json
mysql-connector-java-5.1.35-bin.jar
解压manager节点,并拷贝解压后的cloudera,cm-5.3.3 到/opt目录下;
tar -xvf cloudera-manager-el6-cm5.3.3_x86_64.tar -C /opt/

cp /root/mysql-connector-java-5.1.35-bin.jar /opt/cm-5.3.3/share/cmf/lib/                  //把mysql驱动放到对应的位置
mv /root/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel* /opt/cloudera/parcel-repo/              //把CDH包,还有manifest.json放到对应的位置,并重命名CDH...sha1文件名,去掉最后的数字1.
mv /root/manifest.json /opt/cloudera/parcel-repo/
mv /opt/cloudera/parcel-repo/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha

创建clousera-scm用户:
useradd --system --home=/opt/cm-5.3.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在新节点上初始化CM5的数据库:出现All done, your SCM database is configured correctly! 表示成功。
[root@endb003 ~]# /opt/cm-5.3.3/share/cmf/schema/scm_prepare_database.sh mysql cmbak -h192.168.1.151 -umha_user -p --scm-host 192.168.1.% scm scm scm
Enter database password: 
JAVA_HOME=/usr/java/latest
Verifying that we can write to /opt/cm-5.3.3/etc/cloudera-scm-server
Creating SCM configuration file in /opt/cm-5.3.3/etc/cloudera-scm-server
Executing:  /usr/java/latest/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cm-5.3.3/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cm-5.3.3/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!
到此安装完毕,可以进行启动测试。
2. 关于启动测试部分,线下测试过程如下:
初始化数据库后,修改db.properties文件
[root@hadoop4 ~]# vim /opt/cm-5.3.3/etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=192.168.8.155
com.cloudera.cmf.db.name=cm          //原来初始化的数据库为cmbakk,在这里修改为正在运行正常的155集群的cm数据库                                                                                               
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm

[root@hadoop4 ~]# /opt/cm-5.3.3/etc/init.d/cloudera-scm-server restart    //启动后,发现新cm管理节点能正常登陆,而且出现就管理节点的相关信息,但是无法管理服务。重启服务报错。虽然报错,但是后台服务还是正常运行。

同时,就cm管理节点,出现僵死情况,无法再管理服务,要想管理需要重启就cm管理节点的服务如下:重启后,方能正常管理,切刚才的新cm管理节点此时僵死。但是能正常显示集群时时运行的状态。
[root@hadoop1 ~]# /opt/cm-5.3.3/etc/init.d/cloudera-scm-server restart                   
停止 cloudera-scm-server:                                 [确定]
Starting cloudera-scm-server:                              [确定]


僵死情况即显示如下信息:

发生服务器错误。将以下信息发送至 Cloudera。

路径: http://192.168.8.158:7180/cmf/services/11/do

版本: Cloudera Enterprise Data Hub Edition 试用版 5.3.3 (#217 built by jenkins on 20150401-1625 git: 40ff0e551564e4210ab22da5fa9a6e4e56236c44)

javax.persistence.PersistenceException:org.hibernate.exception.ConstraintViolationException: could not perform addBatch
at AbstractEntityManagerImpl.java line 1387
in org.hibernate.ejb.AbstractEntityManagerImpl convert()
解决办法,重启cloudera-scm-server 服务即可。
/opt/cm-5.3.3/etc/init.d/cloudera-scm-server restart  

测试 2.  cm管理节点以postgres数据库为主的。这里测试CM版本为5.0.2
1. 首先搭建一台同版本的cm管理节点。
步骤如下:创建一个本地yum源 (为了提高安装速度,线下构建本地yum源。)
vim cloud-cm5.02.repo
[root@master ~]# cat /etc/yum.repos.d/cloud-cm5.02.repo
[cloud-manager]
name=Cloud Manager
baseurl=http://192.168.8.209:8090/cm/5.0.2/
gpgcheck=0
[root@master ~]#  ./cloudera-manager-installer.bin  --skip_repo_package=1    //安装bin文件。

完整完毕。

2. 备份原集群pg数据库数据:(6个数据库)
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting  scm >scm.sql 
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting amon >amon.sql
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting  rman >rman.sql
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting nav>nav.sql
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting hive>hive.sql
 pg_dump -p7432 -U cloudera-scm --column-inserts --disable-dollar-quoting hive1>hive1.sql

3. 导入到新的cm节点的pg数据库中
[root@master scmdb191]# dropdb -p7432 -U cloudera-scm  scm 
[root@master scmdb191]# dropdb -p7432 -U cloudera-scm amon
[root@master scmdb191]#  dropdb -p7432 -U cloudera-scm nav
[root@master scmdb191]#  dropdb -p7432 -U cloudera-scm rman

创建数据库:
[root@master scmdb191]# createdb -p 7432 -U cloudera-scm scm
[root@master scmdb191]# createdb -p 7432 -U cloudera-scm amon
[root@master scmdb191]# createdb -p 7432 -U cloudera-scm nav
[root@master scmdb191]# createdb -p 7432 -U cloudera-scm rman
[root@cnsphinx003 ~]#  createdb -p 7432 -U cloudera-scm hive
[root@cnsphinx003 ~]#  createdb -p 7432 -U cloudera-scm hive1


修改所属的用户:
alter database  amon owner to amon;
alter database scm owner to scm;
alter database  nav owner to nav;
alter database rman owner to  rman;
alter database hive owner to  hive;
alter database hive1 owner to  hive1;

导入数据
 psql -hlocalhost -p 7432 -U cloudera-scm -d amon<amon.sql
 psql -hlocalhost -p 7432 -U cloudera-scm -d nav<nav.sql 
 psql -hlocalhost -p 7432 -U cloudera-scm -d rman<rman.sql 
 psql -hlocalhost -p 7432 -U cloudera-scm -d scm<scm.sql
 psql -hlocalhost -p 7432 -U cloudera-scm -d hive<hive.sql 
 psql -hlocalhost -p 7432 -U cloudera-scm -d hive1<hive1.sql   


导入完毕后,修改各个主机的/etc/hosts 添加对应主机的应解析。
/etc/init.d/cloudera-scm-server restart     //启动新cm节点的主机服务
vim /etc/cloudera-scm-agent/config.ini    //修改各个主机的agent节点,指向新cm主机IP
/etc/init.d/cloudera-scm-agent  restart     //重启agent节点。



            

0 0
原创粉丝点击