本帖最后由 fc013 于 2018-11-10 21:04 编辑
问题导读:
1.怎样配置环境及停止集群服务? 2.怎样修改集群HOSTNAME及集群服务配置? 3.怎样做功能验证?
最新经典文章,欢迎关注公众号
环境说明及配置备份
1.本次只修改集群的HOSTNAME不做角色迁移,集群角色划分如下图所示:
集群原始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将数据抓取保存至文件。
终端执如下命令保存
[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]
停止集群所有服务
1.通过CM停止所有CDH服务
停止成功
2.停止Cloudera Management Service服务
3.执行命令删除CDH集群中所有的kerberos证书
删除成功
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]
命令行验证7180端口是否还存在
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进行备份
修改集群HOSTNAME
1.执行如下命令修改集群的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]
注意:按照需求将集群所有节点的HOSTNAME修改为指定的名称
2.修改/etc/hosts文件
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]
4.检查所有节点的HOSTNAME是否配置正确
修改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]
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]
测试Kerberos服务是否正常
修改CM服务配置并启动
1.修改Cloudera Manager Server服务的数据库配置
2.修改CDH集群所有节点cloudera-scm-agent服务的配置
注意:需要修改集群所有节点上的配置。
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]
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]
修改集群服务配置
1.登录Cloudera Manager管理界面
2.修改集群所有服务的数据库配置信息
将所有服务的数据库HOSTNAME更改为修改后的HOSTNAME
3.修改CM中Kerberos配置信息,Fayson使用的AD提供的Kerberos认证(根据需要进行修改)
将KDC和KADMIN指向的主机host更改为最新的HOSTNAME,并保存配置。
4.进入主机列表界面,重新生成集群所有服务的Kerberos信息
执行重新生成Keytab
生成成功
进入“管理”->“安全”界面查看集群所有服务的prinicipal账号信息
注意:重新生成Keytab时需要确保所有服务都是停止状态,这里旧的prinicipal信息也存在,但不影响集群服务使用,如果觉得不顺眼可以在数据库中将cm库下的CREDENTIALS表数据删除,然后再重新生成。
5.启动Cloudera Management Service服务
启动成功
6.启动Zookeeper服务,由于集群启用了HA所以这里要先启动ZK服务
7.进入HDFS的实例列表,点击任意Failover Controller服务进入“进程页面”,找到FC服务中加载的core-site.xml文件
在core-site.xml文件中找到” ha.zookeeper.auth”属性的值
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]
9.执行上述操作后,进入HDFS服务的实例列表界面,选择任意FC服务进入
点击“初始化自动故障转移Znode”
10.进入Hive服务,修改Hive元数据库配置
11.进入Sentry服务,修改Sentry元数据库配置
12.修改Oozie数据库地址
13.完成以上配置后,部署客户端配置
点击“部署客户端配置”
14.启动CDH集群
集群启动成功
集群各个服务状态正常
功能验证
1.集群的HOSTNAME已修改为最新
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]
作业运行成功
总结
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服务界面执行初始化。
来源: weixin 作者: Fayson Hadoop实操
原文链接:如何在Kerberos环境下修改启用HA的CDH集群HOSTNAME
|