在集群安装初期由于未规范集群主机的主机名,这样会带来集群管理的不便,现需要将CDH/CDP集群的主机名统一规范化,在修改主机名的过程中需要注意什么?本篇文章主要介绍如何修改Kerberos环境下的CDP集群的HOSTNAME,在修改CDH集群的主机名采用相同的方法。修改集群所有主机的hostname的步骤如下:
测试环境为单节点集群,所有的角色和服务都部署在该节点上。
集群原始HOSTNAME说明
IP地址 | HOSTNMAE | 节点说明 |
---|---|---|
10.0.0.100 | cdp.cloudera.aliyun | CM、NN、MySQL、KDC,DN |
该节点的HOSTNAME由cdp.cloudera.aliyun修改为cdp1.cloudera.com
修改后的目标环境的IP和HOSTNAME如下
IP地址 | HOSTNMAE | 节点说明 |
---|---|---|
10.0.0.100 | cdp1.cloudera.com | CM、NN、MySQL、KDC,DN |
停止CDP服务
在CM主页→集群名右侧的三竖点→stop,停止CDP集群的服务,如果有多个集群,按照相同的方法停止所有集群的服务。
停止成功
在CM主页→Cloudera Management Service右侧的三竖点→stop,停止CMS的服务
CDP和CMS的所有服务都停止完毕后,如下图所示:
登录CM服务所在节点执行如下命令停止服务
systemctl stop cloudera-scm-server
7180端口无法访问则表示停止成功
可以使用批量脚本执行命令来停止所有节点的cloudera-scm-agent服务,本测试中集群为单节点集群,因此直接执行命令即可
systemctl stop cloudera-scm-agent
修改主机的HOSTNAME
执行如下命令修改集群的HOSTNAME
hostnamectl set-hostname cdp1.cloudera.com
hostname
注意:按照需求将集群所有节点的HOSTNAME修改为指定的名称
修改一台主机的/etc/hosts文件,将集群的所有节点的hosts信息都配置到该节点上。如果是通过DNS管理的hostname,则需要调整DNS的配置,而不需要配置/etc/hosts文件。
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.100 cdp1.cloudera.com cdp1.cloudera.com
对于正常的集群,需要将修改后的hosts文件同步至集群所有节点的/etc目录下
for i in {100..100}; do scp /etc/hosts 10.0.0.$i:/etc/hosts ; done
这里的测试集群为单节点集群,不涉及到文件同步的问题。
使用DNS配置hostname也需要进行该检查。
for i in {100..100}; do ssh 10.0.0.$i 'hostname' ; done
修改krb5文件
修改了KDC服务所在服务器的HOSTNAME,需要将相应的客户端配置修改/etc/krb5.conf文件,内容如下:
[root@cdh01 ~]# vim /etc/krb5.conf
[libdefaults]
default_realm = CLOUDERA.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 86400
renew_lifetime = 604800
forwardable = true
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
CLOUDERA.COM = {
kdc = cdp1.cloudera.com
admin_server = cdp1.cloudera.com
}
[domain_realm]
.cdp1.cloudera.com = CLOUDERA.COM
cdp1.cloudera.com = CLOUDERA.COM
for i in {100..100}; do scp /etc/krb5.conf 10.0.0.$i:/etc/krb5.conf ; done
systemctl restart krb5kdc
systemctl restart kadmin
systemctl status krb5kdc
systemctl status kadmin
[root@cdp ~]# kinit etl_user
Password for etl_user@CLOUDERA.COM:
[root@cdp ~]# klist
修改Cloudera Manager Server服务的数据库配置
修改CM Server的元数据库信息的配置文件/etc/cloudera-scm-server/db.properties
vim /etc/cloudera-scm-server/db.properties
将com.cloudera.cmf.db.host地址修改为新的HOSTNAME。这里配置的是localhost,因此不需要调整。在大家的环境中,该值基本上不会是localhost。
CM Agent的配置文件是/etc/cloudera-scm-agent/config.ini,需要将所有节点的该配置文件进行调整。
vim /etc/cloudera-scm-agent/config.ini
注意:需要修改集群所有节点上的配置。我这台机器因为做成镜像的原因,server_host设置为localhost,大家的集群该属性都是需要修改的。
systemctl start cloudera-scm-server
netstat -apn |grep 7180
for i in {100..100}; do ssh 10.0.0.$i 'systemctl start cloudera-scm-agent' ; done
CM主页→配置→数据库配置
将所有服务的数据库HOSTNAME更改为修改后的HOSTNAME
搜索host,然后将所有修改的host都进行调整,然后保存修改。
保存配置。
CM主页→管理→设置
进入集群设置界面,类别中选择Kerberos,然后搜索host,将所有涉及修改的host都进行调整
将KDC和KADMIN指向的主机host更改为最新的HOSTNAME,并保存配置。
CM主页→Hosts→进入主机列表界面
全选主机,然后执行重新生成Keytab
点击确认,生成所有的Keytab。生成成功后显示如下:
进入管理→安全→Kerberos凭据界面查看集群所有服务的prinicipal账号信息
在过滤器中进行过滤,过滤条件为新的主机名,查看Principal是否正确
注意:重新生成Keytab时需要确保所有服务都是停止状态,这里旧的prinicipal信息也存在,但不影响集群服务使用,如果你有强迫症就是不想看到这些,可以在KDC数据库中将cm库下的CREDENTIALS表数据删除,然后再重新生成。
在CM页面先启动CMS服务。
CMS服务启动成功
查看Kudu的Master和tserver的日志和数据目录的配置
进入到操作系统,清空对应的master和tserver的日志和数据目录
点击“部署客户端配置”
集群启动成功
集群各个服务状态正常
主机名检查
运行检查所有主机进行主机健康检查
向集群提交一个MapReduce作业测试集群功能是否正常
[[root@cdp1 zookeeper]# kinit etl_user
Password for etl_user@CLOUDERA.COM:
[[root@cdp1 zookeeper]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5
作业运行成功
向集群提交一个Spark作业验证集群是否正常
[root@cdp1 ~]# klist
[root@cdp1 ~]# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --num-executors 4 --driver-memory 2g --driver-cores 1 --executor-memory 2g --executor-cores 1 /opt/cloudera/parcels/CDH/lib/spark/examples/jars/spark-examples_2.11-2.4.7.7.1.7.0-551.jar 10
作业运行成功
Beeline连接
klist
beeline
执行beeline查询
select count(*) from worldwidebank.ww_customers;
通过Knox跳转到其他应用的页面