在企业级大数据平台部署中,Cloudera Distribution Hadoop(CDH)的离线安装往往是让运维团队最头疼的环节之一。不同于在线安装的便捷性,离线环境需要面对依赖缺失、配置冲突、服务启动异常等各类"暗礁"。本文将基于真实生产环境中的高频故障场景,拆解每个关键步骤中的潜在风险点,提供可复用的解决方案。
在开始安装前,90%的失败案例源于基础环境配置不当。我们首先需要建立完整的检查清单:
硬件与系统配置验证:
/var目录剩余空间≥30GB(日志和临时文件会快速膨胀)关键命令:通过
free -h和df -h快速验证资源状态
网络与安全策略避坑:
bash复制# 防火墙策略检查(必须彻底关闭而非仅停止服务)
systemctl is-enabled firewalld 2>&1 | grep -q disabled || echo "存在风险"
# SELinux状态永久关闭验证
grep -q '^SELINUX=disabled' /etc/selinux/config || echo "需修改配置文件"
时间同步服务的典型冲突:
当同时存在chrony和ntpd服务时,会导致时钟漂移异常。正确的处理流程:
yum remove -y chronyini复制# /etc/ntp.conf 关键配置
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
bash复制hwclock --systohc && ntpdate -u 0.asia.pool.ntp.org
离线安装的核心在于建立完整的本地软件仓库。常见问题集中在路径权限和仓库元数据生成:
HTTP服务配置要点:
bash复制# 创建标准化目录结构(注意SELinux上下文)
mkdir -p /var/www/html/cdh/{parcels,repos}
restorecon -Rv /var/www/html
YUM仓库元数据生成:
bash复制createrepo --update /var/www/html/cdh/repos
# 验证仓库可访问性
curl -I http://$(hostname)/cdh/repos/repodata/repomd.xml | grep 200
典型错误处理表:
| 错误现象 | 根本原因 | 解决方案 |
|---|---|---|
| HTTP 403 Forbidden | 目录权限不足 | chmod -R 755 /var/www/html |
| Package not found | 元数据未更新 | 重新执行createrepo |
| GPG check失败 | 未禁用验证 | 在repo文件中设置gpgcheck=0 |
CM服务的元数据库配置不当会导致后续组件安装失败。MySQL部署需要特别注意:
关键初始化SQL:
sql复制-- 必须指定utf8字符集
CREATE DATABASE scm
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;
-- 账户权限需要精确控制
GRANT ALL ON scm.* TO 'scm'@'%'
IDENTIFIED BY 'ComplexPwd@123'
WITH MAX_QUERIES_PER_HOUR 1000;
JDBC连接器部署:
bash复制# 必须使用特定文件名和路径
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
当cloudera-scm-server启动失败时,需要掌握日志分析的方法论:
关键日志路径:
/var/log/cloudera-scm-server/cloudera-scm-server.log/opt/cloudera/cm/schema/scm_prepare_database.log高频错误模式识别:
数据库连接失败:
log复制Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
解决方案:检查/etc/cloudera-scm-server/db.properties中的连接字符串
Parcel校验失败:
log复制Parcel directory /opt/cloudera/parcel-repo does not contain parcels
处理步骤:
bash复制chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
restorecon -Rv /opt/cloudera
Jetty端口冲突:
log复制java.net.BindException: Address already in use
快速排查:
bash复制netstat -tlnp | grep 7180
完成安装后,建议执行以下验证流程:
基础服务状态检查:
bash复制# CM服务健康状态
systemctl is-active cloudera-scm-server
# 数据库连接池状态
curl -u admin:admin http://localhost:7180/api/v19/cm/scmDbInfo
主机正确性验证:
bash复制# 检查主机时钟偏移(应<100ms)
pdsh -w node[1-3] "ntpstat | grep synchronised"
# 验证交换空间设置
ansible all -m shell -a "cat /proc/sys/vm/swappiness"
关键配置文件备份:
bash复制# 建立配置快照
tar czvf /backup/cm-config-$(date +%F).tgz \
/etc/cloudera-scm-server \
/etc/yum.repos.d/cloudera-*.repo
在实际运维中,每次安装遇到的具体问题可能各不相同,但掌握这些核心排查思路和工具使用方法,能显著提高部署成功率。建议在测试环境完整演练整个流程后,再在生产环境实施。