CDH5高可用集群离线部署
前几篇文章介绍了下原生Hadoop集群的部署过程,这篇文章就来介绍下CDH的部署过程,毕竟发行版Hadoop的部署、运维都很方便,稳定性也好,实际生产环境上用原生Hadoop的并不是很多。
推荐还是多看CDH官方文档
CDH5各版本的部署过程应该都差不多,我这边测试的CDH5.10.2的和CDH5.9.0的部署过程一模一样,这篇文章就以CDH5.9.0为例。
操作系统环境准备
这个前面的文章已经介绍过,这里不再赘述。
包含操作系统的参数调整、MySQL安装、Jdk1.8安装等。
-> Hadoop集群搭建系统环境准备
注意: 这里操作系统参数不调整的话,后面安装CDH集群前进行主机检查的时候会发出告警。
文件准备
由于是离线部署,因此需要预先下载好需要的文件。
需要准备的文件有:
- Cloudera Manager 5
文件名: cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz
下载地址: https://archive.cloudera.com/cm5/cm/5/ - CDH安装包(Parecls包)
版本号必须与Cloudera Manager相对应
下载地址: https://archive.cloudera.com/cdh5/parcels/5.9.0/
需要下载下面3个文件:- CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel
- CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1
- manifest.json
- MySQL jdbc驱动
文件名: mysql-connector-java-.tar.gz
下载地址: https://dev.mysql.com/downloads/connector/j/
解压出: mysql-connector-java-bin.jar
Cloudera Manager安装
- 所有节点上传cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz文件并解压
# tar -zxvf cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz -C /opt - 所有节点手动创建文件夹
# mkdir /opt/cm-5.9.0/run/cloudera-scm-agent - 所有节点创建cloudera-scm用户
# useradd --system --home=/opt/cm-5.9.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm - 初始化数据库(只需要在Cloudera Manager Server节点执行)
- 首先需要将mysql jdbc驱动放入相应位置:
# cp /path/to/mysql-connector-java-5.1.42-bin.jar /opt/cm-5.9.0/share/cmf/lib/ - 然后执行命令:
# /opt/cm-5.9.0/share/cmf/schema/scm_prepare_database.sh mysql -h 192.168.0.201 -uroot -p123456 --scm-host 192.168.0.201 scm scm scm - 脚本参数说明:
${数据库类型} -h ${数据库所在节点ip/hostname} -u${数据库用户名} -p${数据库密码} –scm-host ${Cloudera Manager Server节点ip/hostname} scm scm scm - 提示下面这个说明执行成功:
All done, your SCM database is configured correctly!
- 首先需要将mysql jdbc驱动放入相应位置:
- 所有节点修改Agent配置
# vim /opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
将其中的server_host参数修改为Cloudera Manager Server节点的主机名 - 将如下文件放到Server节点的
/opt/cloudera/parcel-repo/目录中:- CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel
- CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1
- manifest.json
- 重命名sha1文件
# mv CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1 CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha - 所有节点更改cm相关文件夹的用户及用户组
# chown -R cloudera-scm:cloudera-scm /opt/cloudera# chown -R cloudera-scm:cloudera-scm /opt/cm-5.9.0 - 启动Cloudera Manager
- Server节点:
# /opt/cm-5.9.0/etc/init.d/cloudera-scm-server start# /opt/cm-5.9.0/etc/init.d/cloudera-scm-agent start - 其它节点:
# /opt/cm-5.9.0/etc/init.d/cloudera-scm-agent start
- Server节点:
CDH集群部署
- Server和Agent都启动以后(第一次启动稍慢,需要耐心等待一会儿),就可以访问CM Web页面进行集群部署了,打开浏览器,访问
http://cm-server-ip:7180即可,默认的用户名/密码为:admin/admin
- 然后是协议

- 版本选择,有订阅的选订阅版,没有的选企业试用版或者免费版,这里以免费版安装为例。

- 感谢语

- 指定要安装集群的主机,在当前管理的主机列表中可以看到已经启动CM agent的节点(如果没有,需要检查agent服务是否启动正常)。勾选上所需要的节点。我这里由于之前部署过程中没有截图,所以临时装了个虚拟机,故就一个节点。
- Parcel包选择,默认已经选择好配置的本地仓库中的Parcel包。如果版本选择列表看不到选项,则可能是Cloudera Manager安装步骤的第6步、第7步没执行好。

- 如果本地Parcel包配置无误,则下载步骤是瞬间完成的,然后就是耐心等待分配、解压过程,分配过程的速度取决于节点之间的网络传输速度。 所有节点激活完成后就可以进行下一步了。

- 然后是主机检查。注意我打红框的地方,前面不禁用transparent hugepage和调整vm.swappiness参数的话,这里就会有警告信息。

- 安装服务选择,一定要有Zookeeper、HDFS、Yarn,其他的根据自己需要选择。

- 服务选择完以后,开始进行角色分配。这个需要根据集群规模、节点个数合理分配。

- 如果选择了Hive,则在安装Hive之前,需要先将mysql jdbc驱动放到Hive的lib文件夹下:
# cp /opt/cm-5.9.0/share/cmf/lib/mysql-connector-java-5.1.42-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib/
然后进入mysql创建hive数据库:mysql> create database hive;
配置完以后点一下测试连接,确定没问题以后进行下一步。 - 集群参数调整。这个地方可以调整一部分服务的参数,根据需要合理调整即可。

- 集群启动。

- 集群部署完成。由于我这是临时安装的虚拟机,内存很小,所以报了一大堆警告。

开启高可用(HA)
集群的高可用依赖于Zookeeper和ZKFailoverController(ZKFC),因此启用HA需要确保Zookeeper服务已开启。
要求:
- NameNode: 活动主机和备用主机(硬件配置相同)
- JournalNode: 至少3个(奇数个),系统最多可以承受 (JN个数-1)/2 个故障
- Zookeeper: 至少3个(奇数个)
以下部分内容摘自于官方文档:
注意:在HA群集中,备用NameNode还执行命名空间状态的检查点,因此无需在HA群集中运行Secondary NameNode,CheckpointNode或BackupNode
注意:启用或禁用HA会导致HDFS服务和所有依赖于HDFS的服务的服务中断。在启用或禁用HA之前,请确保您的群集上没有运行作业
注意:启用或禁用HA会导致以前的监视历史记录不可用
注意:启用或禁用HA需要使用具有集群管理员权限的用户
启用HDFS HA
- 转到HDFS,操作->启用High Availability
- 设置备用NameNode主机(硬件配置与活动主机相同)
- 设置JournalNode主机(至少三个),建议放在活动NameNode和备用NameNode以及另外一个硬件类似的机器
- 指定每个JournalNode的Edits目录(需要手动创建,要求为目录空,且拥有适当的权限:hdfs用户,hadoop用户组)


- 根据提示,停掉Hive服务,备份元数据库,更新Hive Metastore NameNode,然后重启Hive服务


启用YARN HA
- 转至YARN,操作->启用High Availability
- 选择备用ResourceManager
- 重新部署客户端配置
CDH高可用集群搭建完毕
搭建完以后,就可以进行一些参数调整、性能测试了