1.概述java
本文档讲述如何将Cloudera Manager在Kerberos环境下迁移至新的CM节点。经过本文档,您将学习到如下知识:mysql
1.如何迁移Cloudera Manager节点linux
2.如何迁移MySQL元数据库sql
3.如何迁移Kerberos MIT KDCshell
文档主要分为如下几步:数据库
1.准备Cloudera Manager新节点服务器
2.MariaDB数据库迁移(可选)oop
3.迁移Kerberos MIT KDC(可选)学习
4.将原CM节点数据迁移至新节点测试
5.迁移后集群服务验证
这篇文档将着重介绍Cloudera Manager节点迁移,并基于如下假设:
1.CDH环境已搭建并正常运行
2.旧Cloudera Manager节点包含Cloudera Manager Server(即cloudera-scm-server)服务和Cloudera Management Service服务(Alert Publisher/Event Server/Host Monitor/Reports Manager/Service Monitor)
3.集群已完成MIT Kerberos的配置,并正常使用
4.集群Hadoop服务HBase/Hive/HDFS/Hue/Kafka/Oozie/Spark/Spark2/Yarn/Zookeeper正常运行
如下是本次测试环境,但不是本操做手册的硬限制:
1.操做系统:Redhat7.2
2.CM版本:CM5.11.1
3.CDH版本:CDH5.11.1
4.采用ec2-user对集群进行部署
2.准备Cloudera Manager新节点
2.1新CM主机前置条件
2.2新主机信息
新主机IP地址:172.31.18.97
新Hostname:ip-172-31-18-97.ap-southeast-1.compute.internal
1.主机操做系统版本
2.防火墙
3.时钟同步
4.swap信息
5.透明大页面
6.SElinux信息
7.host信息
8.Cloudera Manager和OS的yum 源
9.在/usr/share/java目录下建立mysql驱动包软链
2.3安装Cloudera Manager服务
ec2-user@ip-172-31-18-97 log$ sudo yum -y install cloudera-manager-server cloudera-manager-agent
安装完成Cloudera Manager后暂时不要启动服务。
注意:新节点的Cloudera Manager版本必须与原Cloudera Manager版本一致;节点上不要安装CDH的其它组件;
2.4安装MariaDB数据库
因为原CM节点安装有MariaDB数据库,因此在新的CM节点也安装MariaDB数据库进行数据迁移(若是不考虑数据库迁移则能够不用安装)
ec2-user@ip-172-31-18-97 log$ sudo yum -y install mariadb-server mariadb-devel
初始化MariaDB数据库
ec2-user @ ip-172-31-18-97 log# sudo systemctl enable mariadb ec2-user@ip-172-31-18-97 log$ sudo systemctl start mariadb ec2-user@ip-172-31-18-97 log$ sudo /usr/bin/mysql\_secure\_installation
3.MariaDB数据库迁移
若是不作数据库迁移可不跳过该章节
3.1备份原MariaDB数据
将须要迁移的mysql整库导出(可根据须要导出须要的库信息)
root@ip-172-31-25-3 ec2-user# mysqldump -u root -p -A >oldmysql.dump
3.2导入备份数据至新库
1.将备份文件拷贝至新mysql服务上,进行数据导入
root@ip-172-31-18-97 ec2-user# mysql -u root -p < oldmysql.dump
注意:数据导入成功后,须要在mysql client执行命令:FLUSH PRIVILEGES;
4.迁移Kerberos MIT KDC
4.1备份原Kerberos数据库
登陆到主KDC服务器上,使用kdb5_util命令备份Kerberos数据库及配置文件
[ec2-user@ip-172-31-25-3 ~]$ sudo kdb5_util dump -verbose kerberosdb.dumpfile HTTP/ip-172-31-18-97.ap-southeast-1.compute.internal@CLOUDERA.COM HTTP/ip-172-31-19-209.ap-southeast-1.compute.internal@CLOUDERA.COM …. zookeeper/ip-172-31-28-67.ap-southeast-1.compute.internal@CLOUDERA.COM [ec2-user@ip-172-31-25-3 ~]$
/etc/krb5.conf /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kadm5.acl
4.2恢复备份数据至新库
1.在新节点安装Kerberos服务:
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
将4.1备份的数据拷贝到新节点上,经过以下操做将数据还原到Kerberos数据库
2.修改krb5.conf文件,将该文件覆盖/etc目录下的krb5.conf
将上述标红部分修改成当前主机ip或者hostname
3.将kdc.conf和kadm5.acl文件拷贝至/var/kerberos/krb5kdc目录下进行覆盖
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
4.恢复kerberos数据库,在krb5kdc和kadmin服务中止的状况下进行以下操做
注意:此处须要建立kerberos数据库,而后在作数据导入不然krb5kdc和kadmin服务不能正常启动;
启动krb5kdc和kadmin服务
ec2-user@ip-172-31-18-97 kerberos\_bak$ sudo systemctl restart krb5kdc ec2-user@ip-172-31-18-97 kerberos\_bak$ sudo systemctl stop krb5kdc
验证Kerberos是否正常,使用导入的user_r进行测试
4.3更新集群的krb5.conf配置
将KDC主服务器上的/etc/krb5.conf文件拷贝至集群中全部的节点,并验证Kerberos是否正常。
5.将原CM节点数据迁移至新节点
5.1备份原CM节点数据
主要备份CM的监控数据和管理信息,数据目录包括:
/var/lib/cloudera-host-monitor
/var/lib/cloudera-service-monitor
/var/lib/cloudera-scm-server
/var/lib/cloudera-scm-eventserver
/var/lib/cloudera-scm-headlamp
注意:将备份命令压缩传输,防止目录的属主和权限变化
5.2修改CM的数据库配置信息
修改新CM的数据库配置文件/etc/cloudera-scm-server/db.properties,配置文件内容
根据本身的配置信息对标红部分进行修改
5.3CM备份数据导入新节点
将原CM上备份的数据拷贝到新CM节点上
经过以下命令将备份数据还原至对应目录
5.4更新集群全部节点的CM Server指向
修改集群全部节点上/etc/cloudera-scm-agent/config.ini文件中server_host值为新CM节点的hostname
5.5将原CM节点的Cloudera Management Service角色迁移至新节点
启动新CM节点的cloudera-scm-server和cloudera-scm-agent服务
ec2-user@ip-172-31-18-97 253back# sudo systemctl start cloudera-scm-serve ec2-user@ip-172-31-18-97 253back# sudo systemctl start cloudera-scm-agent
注意:在新CM节点上启动cloudera-scm-agent服务后,会将CM节点的信息添加到cm库的HOSTS表中,查看新CM节点对应的HOSTS_ID
登陆mysql数据库将,查看cm.HOSTS表中的Cloudera Manager的host信息
未迁移前能够经过CM管理界面看到新CM节点是没有任何角色
经过以下命令,将旧CM的角色迁移至新CM节点上
update ROLES set HOST_ID=11 where NAME like 'mgmt%';
执行操做后,原CM节点的角色被迁移至新CM节点
经过CM管理界面将原CM节点从集群删除
将原CM节点删除
因为集群配置了Kerberos,则须要更新Kerberos的server,若是Kerberos未迁移则不须要考虑此步
若是集群启用Kerberos,则须要为新CM节点生成keytab(若是未启用集群则跳过此步)
经过CM管理界面启动Cloudera Management Service
因为作了数据库迁移,因此须要修改hive/hue/oozie对应的数据库配置(未作数据库迁移可跳过此步)
进行以上修改后重启集群
6.迁移后集群服务验证
原CM的运行界面,历史监控数据
登陆CM管理平台,查看集群状态正常
迁移后能够查看正常查看集群的历史监控数据
Hue访问及操做正常
HDFS访问及操做正常
HBase经过hue和shell正常操做
7.常见问题分析
1.问题一
问题现象:
问题缘由:
因为cloudera-scm-agent服务于supervisord之间通讯异常致使。
解决方法:
将告警节点上的supervisord进程杀死,而后重启agent服务
2.问题二
问题现象:
问题缘由:
因为在CM迁移时,未迁移/opt/cloudera/csd目录致使。
解决方法:
将原CM节点上/opt/cloudera/csd目录拷贝至新CM节点对应的目录
重启cloudera-scm-server服务
[ec2-user@ip-172-31-18-97 253back]# sudo systemctl start cloudera-scm-server
3.问题三
问题现象:
Service Monitor启动失败,异常信息以下
问题缘由:
因为CM迁移时,/var/lib/cloudera-service-monitor目录的文件缺失致使
解决方法:
将/var/lib/cloudera-service-monitor目录的数据从新覆盖
4.问题四
现象描述:
在集群迁移完成后,集群启动后作了高可用服务的NameNode和ResourceManager服务均不能正常显示主备节点,HDFS的汇总信息没法正常显示
问题缘由:
因为集群配置了kerberos,新CM节点未生成keytab致使
解决方法:
将CM节点的全部服务停掉,而后生成该主机的keytab
8.扩展
如何在不中止集群服务的状况下进行Cloudera Manager迁移,须要知足以下条件:
注意:若是只作第1步操做,则不须要重启hadoop集群相关服务,而且不会影响hadoop集群现有做业;若是进行二、3步操做会对集群做业形成短暂影响,但不须要重启hadoop集群相关服务;
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不愿放,数据玩的花!