企业级大数据平台离线部署实战:基于本地Yum源的CDH6.3.2集群搭建指南

在金融、政务等对数据安全要求严格的行业场景中,生产环境往往需要完全隔离外网。传统依赖公网下载依赖的部署方式在此类场景下完全失效,而手动传输数百个安装包又极易出现版本冲突。本文将分享一套经过银行级项目验证的全离线部署方案,通过构建自维护的本地软件仓库,实现从操作系统工具到CDH组件的全链路内网安装。

1. 离线环境架构设计

1.1 核心组件拓扑

典型离线CDH集群包含三个逻辑层:

  • 仓库层:HTTPD服务+本地Yum源(主节点)
  • 控制层:Cloudera Manager Server+MySQL元数据库(主节点)
  • 计算层:Agent节点+数据服务(工作节点)
# 仓库服务器最小化配置建议(10节点以内集群)
CPU: 8核+  
内存: 32GB+
存储: 500GB+ (需容纳CDH parcels及所有依赖包)
网络: 千兆内网

1.2 软件包预准备

需提前下载的离线资源包:

  • 基础工具集
    • createrepo-0.9.9-28.el7.noarch.rpm
    • httpd-2.4.6-97.el7.x86_64.rpm
  • CDH核心套件
    • Cloudera Manager RPM包(约1.2GB)
    • CDH6.3.2 Parcel文件(约3.5GB)
  • 依赖库
    • MySQL JDBC驱动(mysql-connector-java-5.1.47.jar)
    • Oracle JDK8压缩包

提示:所有安装包建议通过校验SHA256确保完整性,避免传输损坏导致安装失败。

2. 系统级环境配置

2.1 集群主机标准化

每台节点需统一执行以下配置:

# 关闭防火墙和SELinux(生产环境需根据安全策略调整)
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 优化内核参数
echo "vm.swappiness = 0" >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl -p

2.2 时间同步方案对比

内网环境推荐以下两种时间同步方案:

方案类型配置方式精度适用场景
硬件时钟服务器连接GPS/NTP授时设备±1ms金融级高要求环境
软件NTP服务指定主节点为ntp server±10ms普通企业环境

配置示例(软件方案):

# 主节点配置
yum install -y ntp
cat > /etc/ntp.conf <<EOF
server 127.127.1.0
fudge 127.127.1.0 stratum 10
EOF

# 工作节点配置
sed -i '/^server/d' /etc/ntp.conf
echo "server 主节点IP" >> /etc/ntp.conf
systemctl restart ntpd

3. 本地Yum源深度配置

3.1 仓库服务器搭建

分步骤构建高可用软件仓库:

  1. 安装HTTPD服务

    rpm -ivh httpd-2.4.6-97.el7.x86_64.rpm --nodeps
    systemctl start httpd && systemctl enable httpd
    
  2. 组织目录结构

    mkdir -p /var/www/html/cdh6/parcels
    mkdir -p /var/www/html/cm6/rpms
    
  3. 生成元数据

    createrepo /var/www/html/cm6/rpms
    

3.2 客户端配置技巧

工作节点需配置repo文件指向内网仓库:

[cloudera-manager]
name = Cloudera Manager 6.3.2
baseurl = http://主节点IP/cm6/rpms/
gpgcheck = 0
priority = 1

[cdh6]
name = CDH 6.3.2
baseurl = http://主节点IP/cdh6/
gpgcheck = 0
priority = 1

注意:优先级(priority)设置可避免与系统默认仓库冲突,建议设为最高。

4. 数据库集群化配置

4.1 MySQL高可用方案选型

针对不同规模集群的数据库部署建议:

集群规模方案优点缺点
<10节点单节点MySQL部署简单存在单点故障风险
10-50节点MySQL主从复制读写分离需处理复制延迟问题
>50节点Galera Cluster多主同步,自动故障转移对网络稳定性要求高

4.2 元数据库初始化

创建CDH所需数据库时需特别注意字符集:

CREATE DATABASE scm 
  DEFAULT CHARACTER SET utf8 
  DEFAULT COLLATE utf8_general_ci;

CREATE USER 'scm'@'%' IDENTIFIED BY 'ComplexP@ssw0rd!';
GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%';
FLUSH PRIVILEGES;

5. 集群服务部署实战

5.1 Parcel分发优化

通过修改/etc/cloudera-scm-agent/config.ini提升分发效率:

[main]
parcel_distribute_parallelism=4  # 根据网络带宽调整并发数
parcel_install_parallelism=2     # 根据磁盘IOPS调整安装并发

5.2 典型故障处理

安装过程中常见问题及解决方案:

  1. Agent注册失败

    # 检查主节点7180端口是否开放
    netstat -tulnp | grep 7180
    
    # 重置Agent注册状态
    rm -f /var/lib/cloudera-scm-agent/cm_guid
    systemctl restart cloudera-scm-agent
    
  2. Parcel激活超时

    # 增大CM服务器JVM内存
    echo 'export CMF_JAVA_OPTS="-Xmx8G -XX:+UseG1GC"' >> /etc/default/cloudera-scm-server
    

6. 安全加固与监控

6.1 网络隔离策略

建议采用三层防护架构:

  1. 前端隔离:配置iptables仅允许管理网段访问7180端口
  2. 服务隔离:为HDFS/YARN等组件配置Kerberos认证
  3. 数据隔离:启用HDFS Transparent Encryption

6.2 资源监控方案

推荐使用Cloudera Manager内置监控结合自定义指标:

# 添加自定义磁盘健康监控
CM_ALERT='{"name":"DISK_HEALTH","description":"","expression":"roles{type=DATA_NODE} / health{category=DISK} != 1","severity":"CRITICAL"}'
curl -X POST -H "Content-Type: application/json" -d "$CM_ALERT" http://admin:admin@localhost:7180/api/v40/clusters/集群名称/alerts

在最近某证券公司的离线部署项目中,这套方案成功在2小时内完成包含30个节点的CDH集群部署。关键点在于提前将所有依赖包按正确目录结构组织,并编写了自动化校验脚本确保包完整性。

更多推荐