从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP

从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP

  • 一、概述
  • 二、完整步骤
    • 1.官网推荐步骤:
      • (1)验证下SSL/TLS认证是否所有服务都有配备,确认创建新的SSL/TLS认证。
      • (2)导出Cloudera Manager配置
      • (3)关闭集群所有服务
      • (4)关闭Cloudera Managerment服务
      • (5)关闭Cloudera Manager Server
      • (6)关闭需要改hostname的服务器的Cloudera Manager Agent
      • (7)备份Cloudera Manager Server数据库、Hive元数据库等
      • (8)更新hostname和principals
      • (9)如果重命名hosts的服务器中有namenode,而且已经启用了高可用,则需要重新配置ZooKeeper Failover Controller znodes
      • (10)更新Hive Metastore
      • (11)更新所有服务配置中的数据库hostname(修改过hostname的)
      • (12)启动所有CM管理监控服务和集群服务
      • (13)部署客户端配置
    • 2.实际测试
      • (1)更改hostname服务器包含namenode等主节点的情况
      • (2)更改hostname服务器不包含namenode等主节点的情况

一、概述

在一个已经部署完成并且正在运行的由Cloudera Manager管理的CDH集群中,若需要修改全部或者部分主机的域名,是比较麻烦的事。本文将讲解其具体的流程。

二、完整步骤

1.官网推荐步骤:

(1)验证下SSL/TLS认证是否所有服务都有配备,确认创建新的SSL/TLS认证。

(2)导出Cloudera Manager配置

可使用以下方法导出:

  • 根据这个url获取配置:http://[cm_hostname]:7180/api/[api_version]/cm/deployment。
  • curl -u admin:adminhttp://[cm_hostname]:7180/api/[api_version]/cm/deployment > cme-cm-export.json

(3)关闭集群所有服务

(4)关闭Cloudera Managerment服务

(5)关闭Cloudera Manager Server

/etc/init.d/cloudera-scm-server stop

(6)关闭需要改hostname的服务器的Cloudera Manager Agent

/etc/init.d/cloudera-scm-agent stop

(7)备份Cloudera Manager Server数据库、Hive元数据库等

使用mysqldump或者pg_dump等命令

(8)更新hostname和principals

1.更新目标服务器的hostname,包括/etc/hosts、dns、/etc/sysconfig/network、hostname等,确保已删除旧的hostname;
2.如果需要更改Cloudera Manager Server的hostname,则需要另外在所有agent的/etc/cloudera-scm-agent/config.ini文件更新CM Server的hostname
3.如果集群有启用kerberos,则需要做以下步骤:
(1)在Cloudera Manager 数据库设置merged_keytab值:update ROLES set MERGED_KEYTAB=NULL;
(2)从KDC数据库删除旧hostname cluster service principals。在kadmin.local交互界面中使用delprinc
(3)启动Cloudera Manager数据库与Cloudera Manager Server;
(4)启动重命名hosts的CM agent
(5)在CM Web页面重新生成新hostname的principals
如果集群没有启用kerberos,则需要做以下步骤:
(1)启动Cloudera Manager数据库与Cloudera Manager Server;
(2)启动重命名hosts的CM agent,这时查看CM Web页面的主机页面,可以看到主机名称已经更新为最新状态,从CM数据库中也可以看出来。

(9)如果重命名hosts的服务器中有namenode,而且已经启用了高可用,则需要重新配置ZooKeeper Failover Controller znodes

1.启动zookeeper 集群
注意:此时所有其他服务,特别是HDFS/ZKFC,不能处于运行状态
2.在某一台zookeeper服务器,执行zookeeper-client
(1)若集群没有启用kerberos,则直接跳过第一步;若集群配置了kerberos,配置zk认证如下:

  • 点击“HDFS”服务->点击“实例”页面->点击“Failover Controller”角色->点击“进程”页面;
  • 在“hdfs/hdfs.sh [“zkfc”]”程序中,点击“显示”,查看“core-site.xml”,查看ha.zookeeper.auth属性,获取“digest:hdfs-fcs:”后为密码,如TEbW2bgoODa96rO3ZTn7ND5fSOGx0h;
  • 执行addauth:addauth digest hdfs-fcs:TEbW2bgoODa96rO3ZTn7ND5fS

(2)验证HA znode是否存在:ls /hadoop-ha
(3)删除HDFS znode:rmr /hadoop-ha/nameservice1
(4)如果没有运行JobTracker的高可用,则删除HA znode:rmr /hadoop-ha
3.点击”HDFS”服务->点击”实例”tab->选择“操作”->点击“在zookeeper中初始化HA状态”

(10)更新Hive Metastore

1.备份元数据库
2.点击“Hive”服务->点击“操作”->点击“更新Hive Metastore Namenodes”

(11)更新所有服务配置中的数据库hostname(修改过hostname的)

包括Cloudera Management Service roles (Reports Manager, Activity Monitor, Navigator Audit and Metadata Server) 和集群服务如 Hue、Hive等。若直接指定 IP的,忽略此步。

(12)启动所有CM管理监控服务和集群服务

(13)部署客户端配置

2.实际测试

官网的推荐步骤是可以完成这个功能,不过通过实际测试,可以使用简洁有效的步骤。

(1)更改hostname服务器包含namenode等主节点的情况

1)停止集群所有服务器,除了CM管理与监控服务
2)备份所有数据库
3)修改需要更改hostname 的服务器的/etc/sysconfig/network、hostname,更新所有服务器的/etc/hosts文件
4)重启需要更改hostname 的服务器的CM Agent
重启之后,CM Web页面应该就可以显示出更改后的主机名
5)如果重命名hosts的服务器中有namenode,而且已经启用了高可用,参考上面第九、十步
6)更新所有服务配置中的数据库hostname(修改过hostname的),若直接指定 IP的,忽略此步
7)启动所有集群服务
8)部署客户端配置

(2)更改hostname服务器不包含namenode等主节点的情况

若修改的仅仅是一台datanode的主机名,还需要这么大费周章吗?并不需要。数据节点更改域名步骤:
1)关闭需要更改域名的服务器上的相关进程(datanode、nodemanager、regionserver等)
2)修改需要更改域名的服务器的hostname(hostname、/etc/sysconfig/network)及所有服务器的/etc/hosts文件
3)重启需要更改域名的服务器的CM Agent,顺利的话会在CM Web页面上看到更新后的主机名
4)启动关闭的datanode进程,可以看到datanode重新向NN注册了,并且其上的block不会发生迁移
5)启动关闭的nodemanager、regionserver等进程,一般均可正常运行。
6)部署客户端配置
若修改服务器的IP,步骤应该差不多。限于没有可测试环境,暂不测试。

欢迎关注我的微信公众号
从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP_第1张图片

你可能感兴趣的:(hadoop)