
环境:CentOS 7.5, CDH 6.3
本文记录在 CentOS 7.5 下完全离线部署 CDH 6.3 的完整过程。之前搭建过 CDH 5.x,每次都会遇到一些问题,这次把 6.x 的搭建过程记录下来。
一、搭建前的环境准备
1. 版本与依赖要求
- 操作系统:RHEL 7.2
7.5 / CentOS 7.27.5(64 位)
- Python:2.7+(安装 Hue 需要,不支持 Python 3)、perl、python-psycopg2 2.5.4+
- Java:仅支持 Oracle 64 位 JDK 8(最低 1.8u31,推荐 1.8u74+)
- 数据库:生产环境需外部数据库,MySQL 5.7 或 MariaDB 5.5/10.0;库表必须使用 UTF8 编码(不要用 utf8mb4)
- MySQL 5.7 需额外安装 MySQL-shared-compat 或 MySQL-shared 包
- 浏览器:Chrome 63+ / Firefox 59+ / IE 11+ / Edge 41+
2. 网络与安全配置(所有节点)
设置唯一主机名并配置 hosts:
hostnamectl set-hostname <主机名> vim /etc/hosts
|
注意:CDH 不支持 IPv6,建议在系统层面禁用。
禁用防火墙:
systemctl stop firewalld systemctl disable firewalld
|
SELinux 设为 permissive:
getenforce sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config setenforce 0
|
3. 时间同步 NTP(所有节点)
集群时间必须同步:选一个节点做 NTP 服务端,其余节点做客户端。
yum -y install ntp systemctl start ntpd && systemctl enable ntpd
ntpdate -u 192.168.2.10
|
4. 安装 JDK 8(所有节点)
cd /opt wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz tar -zxvf jdk-8u202-linux-x64.tar.gz
|
~/.bashrc 添加环境变量:
export JAVA_HOME=/opt/jdk1.8.0_202 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
|
source ~/.bashrc java -version
|
5. 局域网 Yum 源
安装 CM 需要大量依赖,建议先在集群内某节点搭一个局域网 Yum 源(如用 httpd + createrepo,或 FTP 方式),后续所有节点都指向它。
二、准备离线安装包
- CDH Parcel 包(放到 CM Server 的 parcel-repo):
CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel 及 manifest.json
- Cloudera Manager RPM 包(cm6/6.3.1,从 archive.cloudera.com 下载到
/opt/cloudera-repos):
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm # 约 176MB
|
- MySQL 驱动:
mysql-connector-java-5.1.47.tar.gz
三、搭建本地 CM Yum 源(CM Server 节点)
不要尝试用 FTP 搭建 CM 的 Yum 库。
yum -y install httpd createrepo systemctl start httpd && systemctl enable httpd cd /opt/cloudera-repos createrepo . mv cloudera-repos /var/www/html/
|
浏览器验证:http://<server-ip>/cloudera-repos/ 能看到 RPM 列表即可。
在 CM Server 节点创建 repo 文件:
vim /etc/yum.repos.d/cloudera-manager.repo
|
[cloudera-manager] name=Cloudera Manager 6.3.1 baseurl=http://<server-ip>/cloudera-repos/ gpgcheck=0 enabled=1
|
yum clean all && yum makecache
|
四、安装 Cloudera Manager
yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
|
五、配置 Parcel 存储库
将 CDH Parcel 与 manifest.json 上传到 CM Server 的 /opt/cloudera/parcel-repo/:
cd /opt/cloudera/parcel-repo sha1sum CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel | awk '{print $1}' > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
|
六、配置 MariaDB / MySQL
1. 安装并启动
yum -y install mariadb-server systemctl start mariadb && systemctl enable mariadb
|
2. 修改配置 /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock transaction-isolation = READ-COMMITTED symbolic-links = 0 key_buffer = 16M key_buffer_size = 32M max_allowed_packet = 32M thread_stack = 256K thread_cache_size = 64 query_cache_limit = 8M query_cache_size = 64M query_cache_type = 1 max_connections = 550 log_bin=/var/lib/mysql/mysql_binary_log server_id=1 binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 64M innodb_buffer_pool_size = 4G innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_file_size = 512M
[mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid !includedir /etc/my.cnf.d
|
重启生效:systemctl restart mariadb
3. 安装 JDBC 驱动(CM Server 节点)
tar zxvf mysql-connector-java-5.1.47.tar.gz mkdir -p /usr/share/java/ cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
|
4. 创建 CDH 所需数据库
按需创建数据库及对应用户(UTF8 编码):
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm'; GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon'; GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman'; GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive'; GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie'; GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue'; FLUSH PRIVILEGES;
|
5. 初始化 CM 数据库
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
|
七、启动 CM 并安装 CDH
systemctl start cloudera-scm-server tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
|
看到日志输出 Started Jetty server 后,浏览器访问:
http://<server-ip>:7180 # 默认账号/密码:admin / admin
|
Web 界面操作要点:
- 选择要安装的集群机器;
- 若只有一台机器,选「基础安装」,把所有角色分配到这一台上;
- 填写之前准备好的 MySQL 库信息;
- 等待各服务安装完成 —— 单机部署时中间可能因 GC 导致步骤失败,多试几次即可;
- Parcel 分发与激活在 Web 界面完成。
八、集群优化参考
备注
- 安装完成后如需要可重新启用 SELinux(改回 enforcing 并
setenforce 1)。
- 生产环境不建议使用内置 PostgreSQL,务必使用本文的外部数据库方案。