☰
Cloudera Manager 5.14.2离线安装CDH完整实战教程
2026/10/29 9:37:01 网站建设 项目流程

简介:面向大数据运维与Hadoop生态建设,这份资源是Cloudera Manager 5.14.2在CentOS 7上的完整离线安装包,适用于需要在内网或受限网络中快速部署CDH集群的运维工程师与架构师。压缩包共18362个文件、约793.9MB,含9000个左右的Python脚本用于自动化管理,2600余个HTML页面与2100多个JS脚本支撑Web控制台,另有1900余个JAR组件、900余个DDL脚本及配置文件,构成从agent安装到服务端启动的完整组件链。已有277人浏览学习。借助该包,读者无需逐一下载依赖即可完成CM基础环境搭建,搭配博主的安装配置详解,可掌握Yum仓库配置、数据库初始化、集群创建与监控告警等实施路径,也能深入理解CM目录结构与离线部署机制,为后续集群扩容和运维调优奠定基础。

1. Cloudera Manager 5.14.2 离线包:装 CDH 最快的路径

如果你正被 CDH 5.x 的安装折磨过,应该明白卡点在哪:在线安装时 CM 仓库在海外,下载 parcel 动辄几个 G,网络稍不稳定就断,断续重传又没有好的断点机制,装到一半想放弃都难。而这份 cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz,是 Cloudera Manager 5.14.2 针对 CentOS 7 x86_64 的完整离线安装包,把 CM server + agent + 本地仓库一次性打包好,配合对应的 CDH parcel,可以完全不依赖外网把整套集群拉起。它适合两类人:一类是生产环境要求内网隔离、不能访问外网的运维工程师,另一类是本地搭测试集群、但海外源下载速度太折磨人的学习党。你需要先装好 CentOS 7 最小化系统,再按本文步骤把仓库、parcel、agent 逐一落地,大概两台机器就能跑通。

2. 离线包解构与选型:为什么是 CM 5.14.2 + CentOS 7

2.1 版本背后的兼容关系

CM 5.14.2 对应 CDH 5.14.2,这一代是 CDH 5.x 里比较稳定的中期版本。相比更早的 5.4、5.7,它修复了一批 HDFS 和 YARN 的已知问题,比如 NameNode 在高并发下 EditLog 滚动延迟、YARN 队列资源计算溢出等等。相比 5.15、5.16 这些后期版本,它在功能变化上不大,但很多第三方组件和运维脚本是基于 5.14 测试的,社区反馈的资料也最多。如果你的业务还没有强制要求升级到 CDH 6.x,那么 5.14.2 是性价比较高的选择。

CentOS 7 与 CM 5.14.2 的兼容关系比较微妙:官方文档里明确支持 CentOS 7.2 及以上,但实际部署中 CentOS 7.4、7.6、7.9 都有大量成功案例。需要注意的一点是,CentOS 7.9 内核为 3.10.0-1160,CM 5.14.2 的 kernel 检查项对高版本内核认得不全,个别机器会报“未知内核版本”的警告,这是可忽略的告警,不影响安装。还要注意 x86_64 架构这个约束,ARM 机器不能用这个包,如果用的是华为鲲鹏或者飞腾,请去找对应的 aarch64 版本。

2.2 离线安装与在线安装的差别

在线安装走的是 Cloudera 官方仓库,yum 源指向 archive.cloudera.com,安装过程中 parcel 从官方 CDN 拉取。网络好的时候很顺利,但遇到内网环境就彻底卡住——不仅是速度问题,而是根本访问不了。即使能访问外网,parcel 文件比较大,CDH 5.14.2 的 parcel 包在 2.5G 左右,断点续传策略不理想,经常失败。

离线安装的核心思路是:把 CM 的 rpm 包和 repo 配置事先放到本地,再把 CDH parcel 文件也放到所有节点都能访问的路径,让 CM 在分发 parcel 时从本地拷贝而不是从外网下载。整个安装过程对外网的依赖降为零,所有速度瓶颈都变成本地磁盘 IO 和局域网带宽。我一般会准备一个 Nginx 或直接用 HTTPD 来提供仓库服务,这样 parcels 分发速度能跑到 100MB/s 以上,比在线安装快了不止一个量级。

2.3 安装包内容清单

这份 tar.gz 解压之后主要包含以下几类东西:

内容作用关键点
cloudera-manager.repoyum 源定义文件指向本机或内网 HTTP 仓库
RPMS 目录下的 x86_64 rpm 包CM server、agent、daemon 的安装包版本全部对齐 5.14.2
enterprise/ 目录企业版相关的部署脚本需要 license,社区版可忽略
install.py自动化安装脚本可批量部署 agent 到多台机器
各种 .sha 校验文件完整性校验离线包 md5 检查必备

建议拿到包先做一次 md5 校验,确认上传过程没有损坏。很多翻车案例是包传了一半就解压,结果 RPM 安装时报“rpm 包损坏”或“依赖缺失”的错,排查起来浪费大量时间。

3. 环境初始化:从 CentOS 7 最小化到 Java 与网络

3.1 系统基础设置

无论装 CM 还是 CDH,基础系统层必须保持一致。我用的是 CentOS 7 x86_64 minimal 2009.iso,安装时不勾选 GNOME Desktop,否则会多出几百个无关 rpm,yum 依赖解析时还可能出现冲突。安装完成后的第一步是配好静态 IP 和主机名:

# 关闭 NetworkManager 对配置的干扰,使用 network 服务管理 systemctl stop NetworkManager systemctl disable NetworkManager # 编辑网卡配置,ens33 根据实际网卡名修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33

网卡配置文件里改成这些内容:

BOOTPROTO=static ONBOOT=yes IPADDR=192.168.10.11 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 DNS1=223.5.5.5

改完后执行systemctl restart network确认 IP 生效。然后配置主机名与 hosts,CM 对主机名解析非常敏感,所有节点必须能通过主机名互相解析,不能只靠 IP。编辑/etc/hosts,统一加一行:

192.168.10.11 cm-node01 192.168.10.12 cm-node02 192.168.10.13 cm-node03

文件复制到三台机器,然后各自的/etc/hostname改成对应主机名。这一步做完先别急着装 CM,先验证节点间可以互相 ping 通:

ping -c 3 cm-node02

这里有个血泪经验:如果你发现 ping 不通,先查两个位置——防火墙和 NetworkManager。CentOS 7 默认 firewalld 是开启的,内网环境下直接关闭它最常见:

systemctl stop firewalld systemctl disable firewalld

同时确认 SELinux 的状态。CM 对 SELinux 的支持很有限,生产环境一般建议设为 disabled。很多后期起不来 DataNode 的场景,最终都查到是 SELinux 拦了端口或进程的权限访问。

# 永久关闭 SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

重启之后用sestatus确认输出为 Disabled。这一步不是玄学,CM 里很多脚本会写/proc下的内容,SELinux 的 enforcing 模式会让这些操作失败,而且报错信息一眼看去完全猜不到是 SELinux 的锅。

3.2 时钟同步与 JDK 版本

大数据集群对时间偏差非常敏感,HDFS 和 Kerberos 都对时钟有要求。CM 自带 ntp 配置管理,但底层需要系统先把 chronyd 或 ntpd 跑起来。CentOS 7 默认装的是 chrony,配置文件在/etc/chrony.conf:

# 内网环境下面向主时钟服务器同步,没有就指向本机 server 192.168.10.11 iburst allow 192.168.10.0/24 local stratum 10

然后启动并设置开机自启:

systemctl start chronyd systemctl enable chronyd chronyc sources -v

看到^*开头的行表示已同步成功。如果公司没有 NTP 服务器,就指定一台机器作为授时源,其他节点指向它。时间不同步的症状很隐蔽:HDFS 的 block 上报偶尔失败、Zookeeper 会话频繁超时、YARN 的 Application 状态偶尔异常,这些问题排查起来非常痛苦,所以基础阶段花十分钟把时间同步做好最划算。

JDK 方面,CM 5.14.2 支持 JDK 7 和 JDK 8,我这里推荐 Oracle JDK 8(1.8.0_181 左右)。OpenJDK 可以用,但个别原生库(比如 Hadoop 的 native 压缩库)在 OpenJDK 下的表现有差异,生产上踩过坑之后我就一律用 Oracle JDK。解压安装并配置环境变量:

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/java/ cat >> /etc/profile.d/java.sh <<'EOF' export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar EOF source /etc/profile.d/java.sh java -version

注意java -version输出的应该是 1.8 版本,如果系统里原来有别的 JDK,先清理环境变量再配置。CM 安装时会在/usr/java/下寻找 JDK,路径别乱改,否则 agent 起来之后报找不到 Java 的错。

3.3 ssh 免密登录

安装过程中 CM installer 需要以某个用户(通常是 root)ssh 到所有 agent 节点去执行操作,所以免密登录必须提前配好。在主节点执行:

ssh-keygen -t rsa -b 4096 -N "" ssh-copy-id root@cm-node01 ssh-copy-id root@cm-node02 ssh-copy-id root@cm-node03

每台机器都执行一遍,确保任意节点之间可以免密互连。CM 并不强制要求双向免密,但建议做成全互通,后续用 install.py 推 agent 的时候会省很多事。还有一个细节:/etc/ssh/sshd_config里如果改了端口,installer 脚本里的 ssh 命令都是默认 22 端口,要么改回 22,要么手动改脚本里的端口参数,我建议直接保持 22。

4. 离线部署:本地仓库、installer 与 parcel 分发

4.1 建立本地 yum 仓库

拿到 tar.gz 之后先解压,我习惯放在/opt/cloudera-manager目录下:

mkdir -p /opt/cloudera-manager tar -zxvf cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz -C /opt/cloudera-manager

解压完成后,重点看cloudera-manager.repo这个文件。它默认指向的是 Cloudera 官方仓库地址,离线安装必须把它改成内网地址。先安装 HTTPD 作为仓库的承载服务:

yum install -y httpd systemctl start httpd systemctl enable httpd

然后把解压后的整个目录软链到 web 根目录:

ln -s /opt/cloudera-manager /var/www/html/cloudera-manager

修改cloudera-manager.repo文件内容:

[cloudera-manager] name = Cloudera Manager, Version 5.14.2 baseurl = http://cm-node01/cloudera-manager/centos7/x86_64/ gpgcheck = 0

拷贝到所有节点的 yum 源目录:

cp cloudera-manager.repo /etc/yum.repos.d/

然后执行yum clean all && yum makecache验证仓库可用。这一步多渠道验证一下:浏览器访问http://cm-node01/cloudera-manager/能看到目录结构就说明 OK。仓库配不好是后续所有 yum 安装失败的根源,报错基本都是Could not resolve host: archive.cloudera.com或者 404,我们看到这个错第一反应就是 baseurl 写错了或者软链断了。

4.2 安装 CM Server 与 Agent

主节点上安装 CM Server 包:

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

所有 agent 节点只需要安装 agent 和 daemons:

yum install -y cloudera-manager-agent cloudera-manager-daemons

装完先别急着启动,先看 agent 的配置文件/etc/cloudera-scm-agent/config.ini,把 server_host 指向主节点:

server_host=cm-node01

然后启动 agent 并确认能够注册到 server。先启动 server 再启动 agent 的顺序不能乱:

# 主节点 systemctl start cloudera-scm-server systemctl start cloudera-scm-agent # agent 节点 systemctl start cloudera-scm-agent

server 的启动过程比较慢,首次启动需要初始化数据库并创建表结构,大概 3-5 分钟。观察日志确认启动完成:

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

日志中出现Started Jetty server才表示 server 就绪。此时访问http://cm-node01:7180应该能打开 CM 登录页,默认账号密码是 admin/admin。如果页面打不开,用netstat -tlnp | grep 7180查端口监听状态。这里有个容易翻车的点:server 起不来多数是数据库初始化失败,CM 5.14.2 默认使用内嵌的 PostgreSQL,如果系统中原本装了 MySQL 且占用了 3306 端口,可能会有干扰,不过一般内嵌 PG 用的是 7432 端口,影响不大。

4.3 准备 CDH parcel 并分发

CM Server 起来之后,真正的大头是 CDH parcel 的安装。你需要把 CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel 及对应的 manifest.json 放到 CM 的 parcel 仓库目录下。这个目录默认是/opt/cloudera/parcel-repo:

mkdir -p /opt/cloudera/parcel-repo mv CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel /opt/cloudera/parcel-repo/ mv manifest.json /opt/cloudera/parcel-repo/ # 生成校验文件,cm 会用它校验 parcel 完整性 sha1sum CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel > CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha

注意 manifest.json 文件里记录了所有 parcel 的校验信息,不能手工删减。放好之后,从 CM Web 界面进入「主机」→「Parcel」页面,点击「添加」按钮,等 CM 扫描本地仓库。当状态显示为「已下载」时,继续点「分发」,CM 会把 parcel 从主节点的/opt/cloudera/parcel-repo拷贝到所有 agent 节点的/opt/cloudera/parcels目录。这一步是局域网内的大文件复制,建议先用iperf测一下网卡速度,如果只有百兆网络,分发 2.5G 的 parcel 大概要五分钟以上,属于正常。分发完后点击「激活」,激活这一步会解压 parcel 并生成软链,同时检查磁盘空间是否足够。

# 验证 parcel 激活情况 ls -l /opt/cloudera/parcels/CDH

软链应该指向解压出来的版本目录,到这里 CDH 的二进制环境就绪了。

4.4 数据库配置与集群创建

CM 需要为 Hive、Oozie、Sentry 等组件创建对应的数据库。小规模测试集群直接用 CM 内嵌的 PostgreSQL 即可,但生产环境建议用外部 MySQL 或 PostgreSQL。MySQL 建库脚本比较规范,这里给一个常见的初始化示例:

CREATE DATABASE hive DEFAULT CHARACTER SET utf8; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8; CREATE DATABASE sentry DEFAULT CHARACTER SET utf8; GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive_password'; GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie_password'; GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry_password';

数据库建好之后,在 CM Web 界面里进入「管理」→「数据库」→「创建集群」,选择「使用外部数据库」,填写 JDBC 连接串。CM 的向导会依次安装 HDFS、YARN、Zookeeper,再按业务需求安装 Hive、HBase、Kafka 等。每一步都会在界面上显示当前正在执行的命令和日志,出错了点开日志定位即可。

5. 避坑记录:五个高频问题的排查与修复

5.1 Agent 无法连接到 Server

现象:agent 节点执行systemctl start cloudera-scm-agent启动成功,但 CM 界面上该主机状态一直显示“正在连接”,过了一会儿变成“联系丢失”。

原因:最常见的是 agent 配置的 server_host 不对,或者 7182 端口被防火墙拦截。还有一部分是 agent 进程起来后/etc/cloudera-scm-agent/config.ini里的listening_ip没配对,导致 server 无法反向访问 agent 的 9000 端口。

解决:先确认 server 端 7182 端口正常监听,再用telnet从 agent 节点测试连通性。检查 agent 配置文件里的server_host是否为主节点的内网 IP 或主机名,确认listening_ip为空(表示绑定所有接口)。最后看 agent 日志:

tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log

日志里如果报Failed to connect to server,别急着重启,先检查两端时间是否偏差过大,agent 的心跳包带有时间戳,偏差超过阈值会被 server 丢弃。

5.2 parcel 分发后激活失败

现象:parcel 状态显示“已下载”,分发也显示成功,但点击“激活”后立刻失败,日志里报Failed to move或No such file or directory。

原因:这基本是 disk 空间问题或者目录权限问题。parcel 激活时会先在本地解压到临时目录,再移动到/opt/cloudera/parcels/CDH-5.14.2...,如果/opt分区剩余空间不足,解压到一半就断了。还有的机器/opt/cloudera/parcels所有者不是 cloudera-scm 用户。

解决:用df -h /opt确认剩余空间,CDH 完整解压后需要约 7-8G 空间,建议预留 15G。如果空间充足但激活依然失败,检查目录属主:

chown -R cloudera-scm:cloudera-scm /opt/cloudera

然后重新分发并激活。从那次之后,我在每台 agent 节点上安装前就会先检查/opt挂载分区大小,宁可用 LVM 提前扩容。

5.3 HDFS DataNode 启动后反复宕掉

现象:集群创建后 NameNode 正常,DataNode 进程启动后几秒钟内退出,CM 界面显示“该角色进程退出”,日志里报Initialization failed for Block pool或java.io.IOException: Timed out waiting for ...。

原因:最常见的原因是时钟不同步,DataNode 启动时会向 NameNode 注册,NameNode 校验 block 报告带有时间戳,偏差过大直接拒绝。其次是/etc/hosts配置了主机名映射错误,导致 DataNode 反向解析出的 hostname 与 NameNode 记录不一致。

解决:先在所有节点执行chronyc tracking确认偏差。然后仔细核对/etc/hosts,确保三台机器的 hosts 文件内容完全一样,注释也要一致,避免某台机器少了一行。还要检查 DataNode 日志:

tail -100 /var/log/hadoop-hdfs/hadoop-hdfs-datanode-cm-node01.log

看到类似All specified directories are failed的错,那就是本地磁盘目录权限问题,HDFS 的数据目录默认是/dfs/data,需要确认属主为 hdfs 用户或属组为 hadoop。

5.4 YARN 的 NodeManager 无法注册

现象:NodeManager 启动后,集群界面显示它处于“不健康”状态,日志里报Unable to connect to ResourceManager,但网络明明可以互通。

原因:排查这类问题时要先区分网络层和应用层。RM 默认端口为 8032(RM 调度器)和 8030(RM 应用管理器),如果节点之间开了防火墙只放行 8020,那么 HDFS 通了,YARN 的端口却被挡了。另一个原因是 RM 主机名解析到 127.0.0.1,配置文件里用了 localhost。

解决:在 NodeManager 节点上执行telnet cm-node01 8032测试连通性。不通就检查防火墙策略。通了就要看 RM 侧配置的yarn.resourcemanager.hostname是否为主节点真实 IP。注意 CM 生成的yarn-site.xml在/etc/hadoop/conf下,检查时看的是这个文件而不是手工安装时用的/etc/hadoop/目录。

5.5 Hive Metastore 启动超时

现象:安装 Hive 后,Metastore 角色一直处于“启动失败”状态,CM 的错误日志里报Metastore Connection Failed或者 JDBC 连接超时。

原因:数据库连接串配置错误最常见。CM 创建 Hive 时让你填的数据库主机名,如果填成localhost,而实际 MySQL 在另一个节点,连接必然超时。还有一种情况是 MySQL 的 bind-address 默认只监听 127.0.0.1,外部节点根本连不进去。

解决:MySQL 配置文件/etc/my.cnf中把bind-address改为0.0.0.0,添加skip-name-resolve避免反向解析拖慢连接速度,然后重启 MySQL。再去 CM 的 Hive 配置里把数据库主机改为真实 IP,JDBC URL 明确指定端口。验证方法是从 CM 主节点直接用 mysql 命令远程连一次:

mysql -u hive -h 192.168.10.13 -p hive_password -e "show tables;"

能出结果说明数据库层没问题,再回头重启 Hive 角色。

6. 部署后的验证与调优:把集群调到能用再调到好用

集群启动之后,我先做的是验证核心链路是否跑通,跑一个最简单的 MapReduce 任务作为冒烟测试。在 CM 界面上或者直接登到主节点执行:

sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 4 1000

这个任务会启动 4 个 mapper 去计算 π 的近似值,1000 次采样量不大,几分钟内必完成。如果这个任务能跑完,说明 HDFS 读写、YARN 资源调度、NodeManager 心跳、临时目录权限全部正常。如果在任务提交阶段看到类找不到或者端口连不上的错,再去回头翻 CM 的角色日志,定位效率最高。

接下来推荐做一个磁盘容量和一致性检查,防止 DataNode 数据目录挂载不当导致未来容量误判:

hdfs dfsadmin -report

关注Live DataNodes数量是否等于全部节点,以及每个节点的 DFS Used 占比是否合理。如果某个节点容量明显比其他节点小,多半是数据盘没挂到/dfs/data而是写到了系统盘。

调优方面,你不需要一开始就动上百个参数,我建议按优先级只改三处。第一处是 HDFS 的dfs.replication,测试集群可以设为 2,三节点集群每份数据占两个副本,既保证可用性又省了三分之一存储。第二处是 YARN 的容器内存,CM 默认的yarn.nodemanager.resource.memory-mb等于物理内存减掉系统预留,这个值相对保守,如果节点是 64G 内存,建议显式设为 50G,配合yarn.scheduler.maximum-allocation-mb也调到 50G,避免大任务被容器内存上限卡住。第三处是 Hive 的hive.exec.parallel改为 true,并行度设为 4,这个参数在跑多表关联或者多分区查询时提升非常明显,是生产环境必调项。

对于 DataNode 的数据目录分布,如果机器有多块磁盘,一定要在 CM 的 HDFS 配置里把多个数据目录用逗号分隔填入,默认配置只写了/dfs/data,Hadoop 的机制是副本会先写到目录列表第一个可用目录,多目录才能真正把 IO 打散。

最后还有一个容易被忽略的验证点——journalnode 和 failover controller 的健康。如果你配了 NameNode HA,用hdfs haadmin -getAllServiceState查看 active/standby 状态,确保其中一个是 active。然后强制 failover 一次,观察 standby 能否快速接管,这个操作最好在测试环境验证后再上生产,避免出现两个节点都认为自己是 active 的脑裂场景。

整个环境跑通后,我更建议做一次“冷启动演练”:把集群全部停机再开机,看 CM server、agent、HDFS、YARN、Hive 这些角色是不是按依赖顺序自动恢复。当年我接手的一个集群,就是因为某台机器的 cloudera-scm-agent 没有设置开机自启,机房断电恢复后整个集群卡在“部分角色未启动”的状态,排查了很久。从那以后我每次部署完,都要在所有节点上强制走一遍重启流程验证,确认无误才算交付。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询