本文详细记录在 Linux 环境下离线部署 Cloudera Manager (CM) 和 CDH 集群的全过程,包括 HBase、JDK、MySQL 等组件的安装与配置。

1. 环境准备

集群规划:
本文演示环境为三台机器:

  • Master: 10.0.0.10
  • Node1: 10.0.0.11
  • Node2: 10.0.0.12

1.1 修改主机名 (Hostname)

在三台机器上分别执行:

1
2
3
4
5
6
7
8
9
10
11
#  Master 节点
hostnamectl set-hostname master

# Node1 节点
hostnamectl set-hostname node1

# Node2 节点
hostnamectl set-hostname node2

# 验证
cat /etc/hostname

1.2 配置 Hosts

修改所有节点的 /etc/hosts 文件,内容需保持一致:

1
2
3
10.0.0.10 master
10.0.0.11 node1
10.0.0.12 node2

1.3 配置 SSH 免密登录

在 Master 节点生成密钥并分发给所有节点(包括自己):

1
2
3
4
5
6
7
# 生成密钥 (一路回车)
ssh-keygen -t rsa

# 分发公钥
ssh-copy-id master
ssh-copy-id node1
ssh-copy-id node2

1.4 关闭防火墙与 SELinux

所有节点执行:

1
2
3
4
5
6
7
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux (临时+永久)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

注意:如果不关闭 SELinux,后续 HTTP 服务可能会报 403 Forbidden 错误。

1.5 配置 NTP 时间同步

所有节点执行:

1
2
3
4
5
6
7
8
9
# 修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 安装 NTP
yum -y install ntp

# 修改配置 /etc/ntp.conf (使用阿里源)
# server ntp.aliyun.com
# systemctl restart ntpd

2. 离线安装资源准备

2.1 搭建本地 Yum 源

选择 Master (10.0.0.10) 作为本地仓库服务器。

  1. 安装 HTTPD

    1
    2
    yum install -y httpd createrepo
    systemctl start httpd
  2. 准备 RPM 包
    创建目录 /var/www/html/cm6,将下载好的 CM6 RPM 包和 JDK RPM 包放入其中。

  3. 生成 Repodata

    1
    2
    cd /var/www/html/cm6
    createrepo .
  4. 配置 Yum Repo文件 (所有节点)
    创建 /etc/yum.repos.d/cm6.repo

    1
    2
    3
    4
    5
    [cm6-local]
    name=cm6-local
    baseurl=http://10.0.0.10/cm6/
    enabled=1
    gpgcheck=0
  5. 刷新缓存

    1
    yum clean all && yum makecache

2.2 安装 JDK

所有节点执行:

1
2
# 假设 RPM 包已在 yum 源中,或者直接安装
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64

2.3 安装 MySQL (Master 节点)

安装 MySQL 5.7 作为元数据库。

  1. 卸载旧版本 (Mariadb)

    1
    rpm -qa | grep mariadb | xargs rpm -e --nodeps
  2. 安装新版本
    解压 RPM Bundle 包并安装:

    1
    2
    3
    4
    5
    tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh mysql-community-common-*.rpm
    rpm -ivh mysql-community-libs-*.rpm
    rpm -ivh mysql-community-client-*.rpm
    rpm -ivh mysql-community-server-*.rpm
  3. 配置 /etc/my.cnf

    1
    2
    3
    4
    5
    6
    [mysqld]
    # 允许远程连接
    bind-address=0.0.0.0
    character_set_server=utf8mb4
    explicit_defaults_for_timestamp=true
    # ... 其他标准配置
  4. 启动并初始化

    1
    2
    3
    systemctl start mysqld
    # 获取临时密码
    grep 'temporary password' /var/log/mysqld.log
  5. 修改密码与授权

    1
    2
    3
    4
    5
    6
    mysql -u root -p
    -- 修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678Qq!';
    -- 允许远程 Root 登录
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678Qq!' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  6. 准备 JDBC 驱动
    创建目录并放置驱动:

    1
    2
    mkdir -p /usr/share/java
    cp mysql-connector-java-5.1.49.jar /usr/share/java/mysql-connector-java.jar

2.4 创建业务数据库

登录 MySQL,执行建库脚本(为 scm, amon, rman, hue, hive, oozie 等服务创建数据库和用户)。

(此处省略详细 SQL,参照原文即可,重点是字符集必须为 utf8)

3. 安装 Cloudera Manager

3.1 安装 Server 与 Agent

Master 节点:

1
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

其他节点:

1
yum install cloudera-manager-daemons cloudera-manager-agent

3.2 准备 Parcel 包

Master 节点:
将 CDH Parcel 文件(.parcel, .sha)放入 /opt/cloudera/parcel-repo
注意:将 .sha1 后缀重命名为 .sha

3.3 初始化 CM 数据库

Master 节点执行:

1
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h master -uroot -p'12345678Qq!' --scm-host master scm scm scm

3.4 启动 CM Server

1
2
3
4
systemctl start cloudera-scm-server

# 查看日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

当出现 Started Jetty server 即表示启动成功。

4. Web 界面安装 CDH 集群

  1. 访问 http://10.0.0.10:7180,默认账号密码 admin
  2. 按照向导添加主机(搜索 master, node1, node2)。
  3. 选择存储库:选择“使用 Parcel”,此时应能识别到本地的 CDH 版本。
  4. 主机检查:根据提示调整 linux 内核参数(Swappiness, THP 等)。
  5. 选择服务:根据需求勾选 HDFS, YARN, Zookeeper, HBase, Hive 等。
  6. 数据库配置:填写之前创建的数据库用户和密码。
  7. 等待安装完成。

5. 常见问题排查

5.1 主机运行状况不良 (cm_guid 冲突)

如果克隆的虚拟机,可能会导致 UUID 冲突。
解决: 删除所有 Agent 节点的 /var/lib/cloudera-scm-agent/cm_guid 文件并重启 Agent。

1
2
rm -f /var/lib/cloudera-scm-agent/cm_guid
systemctl restart cloudera-scm-agent

5.2 日志清理脚本

CM 相关服务产生的日志较大,可配置定时任务清理 *.log.**.out.* 文件。清理后若监控页面无数据,需重启 Cloudera Management Service