CDH5高可用集群离线部署

Author Avatar
山小杰 2月 08, 2018
  • 在其它设备中阅读本文章

前几篇文章介绍了下原生Hadoop集群的部署过程,这篇文章就来介绍下CDH的部署过程,毕竟发行版Hadoop的部署、运维都很方便,稳定性也好,实际生产环境上用原生Hadoop的并不是很多。

推荐还是多看CDH官方文档

CDH5各版本的部署过程应该都差不多,我这边测试的CDH5.10.2的和CDH5.9.0的部署过程一模一样,这篇文章就以CDH5.9.0为例。

操作系统环境准备

这个前面的文章已经介绍过,这里不再赘述。
包含操作系统的参数调整MySQL安装Jdk1.8安装等。
-> Hadoop集群搭建系统环境准备

注意: 这里操作系统参数不调整的话,后面安装CDH集群前进行主机检查的时候会发出告警。

文件准备

由于是离线部署,因此需要预先下载好需要的文件。
需要准备的文件有:

Cloudera Manager安装

  1. 所有节点上传cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz文件并解压
    # tar -zxvf cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz -C /opt
  2. 所有节点手动创建文件夹
    # mkdir /opt/cm-5.9.0/run/cloudera-scm-agent
  3. 所有节点创建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
  4. 初始化数据库(只需要在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!
  5. 所有节点修改Agent配置
    # vim /opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
    将其中的server_host参数修改为Cloudera Manager Server节点的主机名
  6. 将如下文件放到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
  7. 重命名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
  8. 所有节点更改cm相关文件夹的用户及用户组
    # chown -R cloudera-scm:cloudera-scm /opt/cloudera
    # chown -R cloudera-scm:cloudera-scm /opt/cm-5.9.0
  9. 启动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

CDH集群部署

  1. Server和Agent都启动以后(第一次启动稍慢,需要耐心等待一会儿),就可以访问CM Web页面进行集群部署了,打开浏览器,访问 http://cm-server-ip:7180 即可,默认的用户名/密码为:admin/admin
    login
  2. 然后是协议
    协议
  3. 版本选择,有订阅的选订阅版,没有的选企业试用版或者免费版,这里以免费版安装为例。
    许可证版本选择
  4. 感谢语
    Thanks
  5. 指定要安装集群的主机,在当前管理的主机列表中可以看到已经启动CM agent的节点(如果没有,需要检查agent服务是否启动正常)。勾选上所需要的节点。我这里由于之前部署过程中没有截图,所以临时装了个虚拟机,故就一个节点。
    hostSelect
  6. Parcel包选择,默认已经选择好配置的本地仓库中的Parcel包。如果版本选择列表看不到选项,则可能是Cloudera Manager安装步骤的第6步、第7步没执行好。
    parcelSelect
  7. 如果本地Parcel包配置无误,则下载步骤是瞬间完成的,然后就是耐心等待分配、解压过程,分配过程的速度取决于节点之间的网络传输速度。 所有节点激活完成后就可以进行下一步了。
    包部署
  8. 然后是主机检查。注意我打红框的地方,前面不禁用transparent hugepage和调整vm.swappiness参数的话,这里就会有警告信息。
    主机检查
  9. 安装服务选择,一定要有Zookeeper、HDFS、Yarn,其他的根据自己需要选择。
    服务选择
  10. 服务选择完以后,开始进行角色分配。这个需要根据集群规模、节点个数合理分配。
    角色分配
  11. 如果选择了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;
    hive
    配置完以后点一下测试连接,确定没问题以后进行下一步。
  12. 集群参数调整。这个地方可以调整一部分服务的参数,根据需要合理调整即可。
    参数调整
  13. 集群启动。
    start
  14. 集群部署完成。由于我这是临时安装的虚拟机,内存很小,所以报了一大堆警告。
    success

开启高可用(HA)

集群的高可用依赖于Zookeeper和ZKFailoverController(ZKFC),因此启用HA需要确保Zookeeper服务已开启。
要求:

  1. NameNode: 活动主机和备用主机(硬件配置相同)
  2. JournalNode: 至少3个(奇数个),系统最多可以承受 (JN个数-1)/2 个故障
  3. 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用户组)
    jn
    ha
  • 根据提示,停掉Hive服务,备份元数据库,更新Hive Metastore NameNode,然后重启Hive服务
    hive1
    hive2

启用YARN HA

  • 转至YARN,操作->启用High Availability
  • 选择备用ResourceManager
  • 重新部署客户端配置

CDH高可用集群搭建完毕

搭建完以后,就可以进行一些参数调整、性能测试了