集群高可用
阿里云Cloudera CDP默认支持集群中组件HDFS NameNode、YARN ResourceManager以及Hive Metastore Server的高可用,此外对于Hive、Hue等组件用于存储元数据的元数据库MariaDB也做了主从备份,能最大限度保证服务的可用性和数据的可恢复性。
组件布局
高可用集群采用3 Master架构,为了节省您的硬件成本,我们默认会从3个Master节点里拿出一个节点作为Utility工具节点。
HDFS NameNode
对于HDFS NameNode,阿里云Cloudera CDP在两台Master节点上均部署了NameNode组件,其中一台处于活跃状态,另外一台作为备用。
在Master节点和Utility节点上均部署了JournalNode,保证NameNode日志的高可用。此外,为了保证处于活跃状态NameNode宕机之后,能自动切换到备用的NameNode,在两台Master节点上部署了FailoverController,整个故障切换过程无需人工介入。
YARN ResourceManager
和NameNode类似,阿里云Cloudera CDP在两台Master节点上部署了ResourceManager,一个ResourceManager实例处于活跃状态,另外一台作为备用。
由于ResourceManager内嵌的ActiveStandbyElector会对ResourceManager做健康检查和leader选举,因此ResourceManager不需要部署额外的ZKFC组件。
当活跃的ResourceManager宕机之后,会快速切换到备用的ResourceManager,切换过程无需人工介入。
元数据库
Cloudera Manager、Hive和Hue等组件都需要使用数据库存储他们的元数据信息,目前元数据库部署在Utility节点和Master-1节点上,采用主备的架构,Utility节点上的元数据库作为Master,Master-1节点上的元数据库作为Slave去复制Utility节点的元数据库的数据。
如果Utility节点宕机或者Utility节点上的MariaDB Master出现故障,仅需要简单的操作就可以将元数据库切换到cdp-master-1节点上的备库,具体操作如下:
在cdp-master-1上运行命令:
mysql
进入mysql终端停止MariaDB Slave的IO线程:
stop slave io_thread
关闭MariaDB的slave角色:
stop slave
删除目录
/var/lib/mysql
目录下的文件master.info 和 relay-log.info:cd /var/lib/mysql; mv master.info master.info.bak; mv relay-log.info relay-log.info.bak
修改MariaDB的配置文件:
vi /etc/my.cnf
# 删除:
read_only
relay-log = relay-bin
relay-log-index = relay-bin.index
# 添加:
log_bin = mysql-bin
log-bin-index = mysql-bin.index
binlog_format = ROW
max_binlog_size = 100M
重启MariaDB:
service mysql restart
在cdp-master-1上运行命令:
mysql
进入mysql终端,执行命令:reset master
将CM的数据库切换到从库上:修改在Utility节点的配置文件:
vi /etc/cloudera-scm-server/db.properties
# 将com.cloudera.cmf.db.host修改为当前机器的fdqn
com.cloudera.cmf.db.host=[MariaDB slave所在机器的fdqn]
重启CM:
service cloudera-scm-server restart
hive/hue/rman的数据库地址可以在CM的管控界面进行配置并重启以生效,以Hue为例