环境说明及配置备份1.本次只修改集群的HOSTNAME不做角色迁移,集群角色划分如下图所示: <ignore_js_op> 集群原始HOSTNAME
IP地址 |
HOSTNMAE
|
节点说明
|
172.27.xx.xx
|
cdh01.fayson.com
|
NN、RM、JN、Oozie
|
172.27.xx.xx
|
cdh02.fayson.com
|
NN、RM、JN、Oozie、DataNode
|
172.27.xx.xx
|
cdh03.fayson.com
|
DataNode
|
172.27.xx.xx
|
cdh04.fayson.com
|
DataNode
|
需要修改为HOSTNAME列表
IP地址 |
HOSTNMAE
|
节点说明
|
172.27.xx.xx
|
cdh1.fayson.com
|
NN、RM、JN、Oozie
|
172.27.xx.xx
|
cdh2.fayson.com
|
NN、RM、JN、Oozie、DataNode
|
172.27.xx.xx
|
cdh3.fayson.com
|
DataNode
|
172.27.xx.xx
|
cdh4.fayson.com
|
DataNode
|
2.通过CM的API接口备份Cloudera Manager的配置
可以通过在浏览器输入CM配置访问地址,将内容备份或者在终端使用curl将数据抓取保存至文件。 <ignore_js_op> 终端执如下命令保存 [mw_shl_code=shell,true]curl -u admin:admin http://cdh01.fayson.com:7180/api/v19/cm/deployment > cme-cm-export.json[/mw_shl_code] <ignore_js_op> 停止集群所有服务
1.通过CM停止所有CDH服务 <ignore_js_op> 停止成功 <ignore_js_op> 2.停止Cloudera Management Service服务 <ignore_js_op> <ignore_js_op> 3.执行命令删除CDH集群中所有的kerberos证书 <ignore_js_op> 删除成功 <ignore_js_op> 4.登录CM服务所在节点执行如下命令,停止Cloudera Manager Server服务 [mw_shl_code=shell,true][root@cdh01 ~]# systemctl stop cloudera-scm-server [root@cdh01 ~]# systemctl status cloudera-scm-server[/mw_shl_code]
<ignore_js_op> 命令行验证7180端口是否还存在 <ignore_js_op> 5.停止集群所有节点的cloudera-scm-agent服务 [mw_shl_code=shell,true]sh ssh_do_all.sh node.list "systemctl stop cloudera-scm-agent"[/mw_shl_code] 6.为了确保修改失败后能够回滚,这里建议将MySQL或PostgreSQL进行备份 修改集群HOSTNAME1.执行如下命令修改集群的HOSTNAME,以cdh01.fayson.com为例 [mw_shl_code=shell,true][root@cdh01 shell]# hostnamectl set-hostname cdh1.fayson.com [root@cdh01 shell]# hostname[/mw_shl_code] <ignore_js_op> 注意:按照需求将集群所有节点的HOSTNAME修改为指定的名称
2.修改/etc/hosts文件 <ignore_js_op> 3.将修改后的hosts文件同步至集群所有节点的/etc目录下 [mw_shl_code=shell,true][root@cdh1 ~]# cd /data/disk1/shell/ [root@cdh1 shell]# sh bk_cp.sh ip.list /etc/hosts /etc/[/mw_shl_code]
<ignore_js_op> 4.检查所有节点的HOSTNAME是否配置正确 <ignore_js_op> 修改krb5.conf配置文件
这里Fayson使用的是Active Directory提供的Kerberos服务,没有修改该服务的hostname,如果你的KDC服务是修改了HOSTNAME则需要根据如下步骤进行修改:
1.修改了KDC服务所在服务器的HOSTNAME,需要将相应的客户端配置修改, /etc/krb5.conf文件,内容如下: [mw_shl_code=shell,true][root@cdh01 ~]# vim /etc/krb5.conf … [realms] FAYSON.COM = { kdc = cdh1.fayson.com admin_server = cdh1.fayson.com } [domain_realm] .fayson.com = FAYSON.COM fayson.com = FAYSON.COM[/mw_shl_code] 2.重启kdc和kadmin服务 [mw_shl_code=shell,true][root@cdh1 krb5kdc]# systemctl restart kadmin [root@cdh1 krb5kdc]# systemctl restart krb5kdc[/mw_shl_code] <ignore_js_op> 3.将/etc/krb5.conf文件同步至集群所有节点 [mw_shl_code=shell,true][root@cdh01 shell]# sh bk_cp.sh node.list /etc/krb5.conf /etc/[/mw_shl_code] <ignore_js_op> 测试Kerberos服务是否正常 <ignore_js_op> 修改CM服务配置并启动1.修改Cloudera Manager Server服务的数据库配置 <ignore_js_op> 2.修改CDH集群所有节点cloudera-scm-agent服务的配置 <ignore_js_op> 注意:需要修改集群所有节点上的配置。 3.启动cloudera-scm-server服务 [mw_shl_code=shell,true][root@cdh1 ~]# systemctl start cloudera-scm-server [root@cdh1 ~]# netstat -apn |grep 7180[/mw_shl_code]
<ignore_js_op> 4.启动集群所有节点的cloudera-scm-agent服务 [mw_shl_code=shell,true][root@cdh1 ~]# cd /data/disk1/shell/ [root@cdh1 shell]# sh ssh_do_all.sh node.list "systemctl start cloudera-scm-agent"[/mw_shl_code] <ignore_js_op> 修改集群服务配置
1.登录Cloudera Manager管理界面 <ignore_js_op> 2.修改集群所有服务的数据库配置信息 <ignore_js_op> 将所有服务的数据库HOSTNAME更改为修改后的HOSTNAME <ignore_js_op> 3.修改CM中Kerberos配置信息,Fayson使用的AD提供的Kerberos认证(根据需要进行修改) <ignore_js_op> <ignore_js_op> 将KDC和KADMIN指向的主机host更改为最新的HOSTNAME,并保存配置。
4.进入主机列表界面,重新生成集群所有服务的Kerberos信息 <ignore_js_op> 执行重新生成Keytab <ignore_js_op> <ignore_js_op> 生成成功 <ignore_js_op> 进入“管理”->“安全”界面查看集群所有服务的prinicipal账号信息 <ignore_js_op> 注意:重新生成Keytab时需要确保所有服务都是停止状态,这里旧的prinicipal信息也存在,但不影响集群服务使用,如果觉得不顺眼可以在数据库中将cm库下的CREDENTIALS表数据删除,然后再重新生成。
5.启动Cloudera Management Service服务 <ignore_js_op> 启动成功 <ignore_js_op> 6.启动Zookeeper服务,由于集群启用了HA所以这里要先启动ZK服务 <ignore_js_op> 7.进入HDFS的实例列表,点击任意Failover Controller服务进入“进程页面”,找到FC服务中加载的core-site.xml文件 <ignore_js_op> 在core-site.xml文件中找到” ha.zookeeper.auth”属性的值 <ignore_js_op> 8.登录任意ZK服务所在节点,执行zookeeper-client访问ZK服务,在命令行执行如下命令 [mw_shl_code=shell,true][zk: localhost:2181(CONNECTED) 2] addauth digest hdfs-fcs:QROKivFr9tYPAXuAbob8uXgYh5i8LZ [zk: localhost:2181(CONNECTED) 3] ls /hadoop-ha [nameservice1] [zk: localhost:2181(CONNECTED) 4] rmr /hadoop-ha/nameservice1[/mw_shl_code] <ignore_js_op> 9.执行上述操作后,进入HDFS服务的实例列表界面,选择任意FC服务进入 <ignore_js_op> 点击“初始化自动故障转移Znode” <ignore_js_op> 10.进入Hive服务,修改Hive元数据库配置 <ignore_js_op> 11.进入Sentry服务,修改Sentry元数据库配置 <ignore_js_op> 12.修改Oozie数据库地址 <ignore_js_op> 13.完成以上配置后,部署客户端配置 <ignore_js_op> <ignore_js_op> 点击“部署客户端配置” <ignore_js_op> 14.启动CDH集群 <ignore_js_op> 集群启动成功 <ignore_js_op> 集群各个服务状态正常 <ignore_js_op> 功能验证1.集群的HOSTNAME已修改为最新 <ignore_js_op> 2.向集群提交一个MapReduce作业测试功能是否正常 [mw_shl_code=shell,true][root@cdh1 ~]# kinit usera Password for fayson@FAYSON.COM: [root@cdh1 ~]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5[/mw_shl_code] <ignore_js_op> 作业运行成功 <ignore_js_op> <ignore_js_op> 总结1.涉及到CM节点则需要将集群所有节点的/etc/cloudera-scm-agent/config.ini配置文件中的server_host配置修改为最新CM节点的HOSTNAME。 2.涉及到数据节点的HOSTNAME则需要修改CM服务和CDH中所有使用数据库服务的配置(如:Oozie、Sentry、Hive、CMS等)。 3.涉及到修改KDC服务器的HOSTNAME则需要修改/etc/krb.conf配置,并且需要将该配置文件更新到集群所有节点。 4.修改了集群节点的HOSTNAME,需要更新集群所有节点的/etc/hosts文件。 5.在集群启用HA后,修改了NameNode节点的HOSTNAME需要做一些额外的处理,先将ZK服务上/hadoop-ha/nameservice1的Znode删除,在HDFS的FC服务界面执行初始化。
|