news 2026/10/21 3:36:49

CentOS 7 安装 Cloudera Manager 5.10.0 完整指南:从环境配置到服务验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS 7 安装 Cloudera Manager 5.10.0 完整指南:从环境配置到服务验证

简介:本资源为Cloudera Manager 5.10.0在CentOS7上的安装包,面向大数据运维工程师、CDH集群管理员及Hadoop学习者,用于解决CDH环境部署、组件管理与集群监控问题。压缩包内含cm-5.10.0与cloudera两个核心目录,共约2000个文件,涵盖Python脚本与字节码、HTML与JS前端页面、JAR依赖包、DDL建表语句、PNG图标、SO动态库、JSON与properties配置、XML描述文件及Shell启动脚本等,完整覆盖CM服务端与代理端的运行所需,包体约615.94MB。已有825人学习下载。借助该资源可快速搭建CM管理平台,完成HDFS、YARN、HBase、Spark等组件的配置与优化,并通过Web界面实现主机添加、CDH部署、实时监控与故障排查,适合作为CDH集群落地与运维的实用工具包。

1. 从一次 CentOS 7 上 CM 5.10.0 装到一半卡住说起

CentOS 7 上装 Cloudera Manager 5.10.0,是很多大数据入门环境绕不开的一关。我见过太多人把cloudera-manager-centos7-cm5.10.0_x86_64.tar.gz解压完就以为装好了,结果cloudera-scm-server起不来,日志里全是数据库连接失败或者端口占用。这套环境本身不复杂,但它对 JDK 版本、数据库驱动、主机名解析、SELinux 状态都有硬性要求,任何一项没对齐,后面全盘卡死。这篇笔记面向的是正在 CentOS 7 上搭 CM 5.10.0 的开发者,不管你是第一次装还是重装踩了坑,我会把版本选择、解压路径、数据库初始化、服务启动和验证方法按顺序讲清楚,每一步都给出可复现的命令和参数说明。

2. 装之前先把环境对齐:JDK、主机名、SELinux 和数据库

2.1 版本选择:为什么是 CM 5.10.0 配 JDK 8

CM 5.10.0 是 Cloudera 在 CDH 5 时代的一个稳定版本,官方支持的操作系统列表里 CentOS 7 是主力。这个版本对 JDK 的要求是 Oracle JDK 8,不支持 JDK 11 及以上。我一般会直接装java-1.8.0-openjdk-devel,因为它在 CentOS 7 的 yum 源里就有,省去手动配置的麻烦。

# 安装 OpenJDK 8 开发包,包含 jps、jstack 等排查工具 yum install -y java-1.8.0-openjdk-devel # 确认版本,输出应包含 "1.8.0" java -version # 配置 JAVA_HOME,写入全局 profile echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile

这里的关键是JAVA_HOME必须指向 JDK 根目录而不是bin目录。CM 的启动脚本会去$JAVA_HOME/bin/java找可执行文件,路径写错就会报JAVA_HOME is not set或者No such file or directory。另外-devel包不能省,后面排查进程要用到jps。

2.2 主机名和 hosts:别让 CM 找不到自己

CM 5.10.0 对主机名解析非常敏感。它要求所有节点的主机名是 FQDN 格式,并且/etc/hosts里必须有对应的解析记录。我见过有人主机名设成localhost,结果 CM Server 启动时绑定到 127.0.0.1,Agent 连不上。

# 设置主机名,假设节点叫 cm-server hostnamectl set-hostname cm-server # 编辑 /etc/hosts,添加本机 IP 和主机名的映射 # 假设本机 IP 是 192.168.1.100 echo "192.168.1.100 cm-server" >> /etc/hosts # 验证解析,应该返回 192.168.1.100 getent hosts cm-server

getent hosts比ping更可靠,因为它直接查 NSS 配置,不受 ICMP 限制。如果这一步返回空或者返回 127.0.0.1,后面 CM Agent 注册节点时一定会失败。

2.3 SELinux 和防火墙:先关掉再装,装完再按需开

CM 5.10.0 的安装过程需要写入多个目录、绑定多个端口。SELinux 在 enforcing 模式下会拦截这些操作,防火墙会挡住 7180、7182、7183 等端口。我的习惯是安装阶段先关掉,装完验证通过后再按最小权限开回来。

# 临时关闭 SELinux setenforce 0 # 永久关闭,修改配置文件 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 停止并禁用 firewalld systemctl stop firewalld systemctl disable firewalld # 确认 SELinux 状态,应输出 Disabled 或 Permissive getenforce

setenforce 0只对当前会话生效,重启后会恢复。所以必须改/etc/selinux/config。防火墙这边,如果生产环境不允许直接关,至少要把 CM 用到的端口放行:7180 是 Web UI,7182 是 Agent 心跳,7183 是 Agent 控制,还要加上 Hadoop 组件自己的端口段。

2.4 数据库准备:CM 5.10.0 需要独立元数据库

CM 5.10.0 支持 MySQL、PostgreSQL、Oracle。我一般用 MySQL 5.7,因为 CentOS 7 的 yum 源里默认就是 MariaDB 5.5,版本太低,CM 会报错。需要先加 MySQL 官方源或者用 MySQL 5.7 的通用二进制包。

# 安装 MySQL 5.7 社区版(以官方 yum 源为例) rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-community-server # 启动并设置开机自启 systemctl start mysqld systemctl enable mysqld # 获取临时密码 grep 'temporary password' /var/log/mysqld.log # 登录后修改密码并创建 CM 专用库和用户 mysql -uroot -p

登录 MySQL 后执行以下 SQL:

-- 创建 CM 元数据库,字符集必须是 utf8 CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; -- 创建专用用户,密码按自己环境改 CREATE USER 'scm'@'%' IDENTIFIED BY 'Scm@123456'; -- 授权 GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%'; FLUSH PRIVILEGES;

字符集必须是utf8,不能用latin1,否则 CM 初始化时会报Specified key was too long。用户授权用'scm'@'%'允许从任意节点连接,如果只在本机连可以改成'scm'@'localhost'。密码复杂度要满足 MySQL 5.7 的默认策略,至少包含大小写字母、数字和特殊字符。

3. 解压与目录规划:tar.gz 包到底该放哪

3.1 解压路径选择:/opt 还是 /usr/share

cloudera-manager-centos7-cm5.10.0_x86_64.tar.gz解压后会生成cloudera和cm-5.10.0两个顶层目录。官方文档建议放在/opt下,我一般也遵循这个习惯,因为/opt本来就是给第三方软件用的,权限清晰,不会和系统包管理器的文件混在一起。

# 创建安装目录 mkdir -p /opt/cloudera-manager # 解压到指定目录,-C 指定目标路径 tar -xzvf cloudera-manager-centos7-cm5.10.0_x86_64.tar.gz -C /opt/cloudera-manager # 查看解压结果,应该看到 cloudera 和 cm-5.10.0 两个目录 ls -l /opt/cloudera-manager

-C参数指定解压目标目录,不加的话会解压到当前工作目录。解压完成后,/opt/cloudera-manager/cm-5.10.0是 CM 的主目录,里面包含etc、lib、share等子目录。/opt/cloudera-manager/cloudera是 Agent 和 Server 的公共依赖目录。

3.2 目录权限:别用 root 跑所有服务

CM 5.10.0 默认用cloudera-scm用户跑 Server 和 Agent。如果解压后目录属主是 root,服务启动时会因为权限不足写不了日志和 PID 文件。

# 创建 cloudera-scm 用户(如果不存在) useradd --system --home=/opt/cloudera-manager/cm-5.10.0/run/cloudera-scm-server --no-create-home --shell=/bin/false cloudera-scm # 把安装目录属主改成 cloudera-scm chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager # 确认权限 ls -ld /opt/cloudera-manager/cm-5.10.0

--system表示创建系统用户,--no-create-home表示不创建家目录,--shell=/bin/false禁止登录。这些参数是 CM 官方脚本里用的,直接照抄就行。chown -R递归改属主,确保所有子目录和文件都归cloudera-scm管。

3.3 配置 CM Server 的数据库连接

CM Server 需要知道元数据库在哪、用什么账号连。这个配置写在/opt/cloudera-manager/cm-5.10.0/etc/cloudera-scm-server/db.properties里。

# 进入配置目录 cd /opt/cloudera-manager/cm-5.10.0/etc/cloudera-scm-server # 备份默认配置 cp db.properties db.properties.bak # 编辑 db.properties,填入实际数据库信息 cat > db.properties <<EOF com.cloudera.cmf.db.type=mysql com.cloudera.cmf.db.host=192.168.1.100 com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.password=Scm@123456 com.cloudera.cmf.db.setupType=EXTERNAL EOF

com.cloudera.cmf.db.type固定写mysql。host填数据库所在节点的 IP 或主机名。setupType=EXTERNAL表示用外部数据库,如果写EMBEDDED会用内置的 PostgreSQL,但那个只适合测试,生产环境必须用外部库。密码要和前面 MySQL 里创建的用户密码一致,大小写都不能错。

3.4 配置 CM Agent 的 Server 地址

Agent 需要知道 Server 的地址才能注册。这个配置在/opt/cloudera-manager/cm-5.10.0/etc/cloudera-scm-agent/config.ini里。

# 编辑 Agent 配置 cd /opt/cloudera-manager/cm-5.10.0/etc/cloudera-scm-agent # 修改 server_host 为 CM Server 的主机名 sed -i 's/^server_host=.*/server_host=cm-server/' config.ini # 确认修改结果 grep '^server_host' config.ini

server_host必须和 Server 节点的主机名完全一致,包括大小写。如果 Server 和 Agent 装在同一台机器上,这里写localhost也能通,但多节点环境下必须写 FQDN 或 IP。改完可以用grep确认一下,避免 sed 没匹配到。

4. 启动 CM Server 与 Agent:顺序、日志和常见报错

4.1 启动顺序:先 Server 后 Agent

CM 的启动顺序不能反。Server 要先起来,初始化数据库表结构,监听 7180 端口,Agent 才能注册上来。如果先起 Agent,它会不断重试连接 Server,日志里全是Connection refused。

# 启动 CM Server systemctl start cloudera-scm-server # 查看启动状态 systemctl status cloudera-scm-server # 实时查看 Server 日志,等待出现 "Started Jetty" 或 "Server started" tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

Server 首次启动会初始化数据库,这个过程可能需要一到两分钟。日志里会依次出现Initializing database、Creating tables、Started Jetty。看到Started Jetty或者Server started才算真正就绪。如果卡在Initializing database超过五分钟,大概率是数据库连接有问题,去db.properties里检查 host、user、password。

4.2 启动 Agent 并确认注册

Server 就绪后,再启动 Agent。

# 启动 CM Agent systemctl start cloudera-scm-agent # 查看 Agent 日志 tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log # 确认 Agent 进程存在 ps -ef | grep cloudera-scm-agent | grep -v grep

Agent 日志里出现Connected to server或者Heartbeating to server就表示注册成功。如果一直报Connection refused,检查 Server 是否真的在监听 7182 端口:ss -tlnp | grep 7182。如果端口没监听,说明 Server 没起来或者配置里绑定了错误的网卡。

4.3 常见启动报错与处理

报错一:JAVA_HOME is not set

现象是 Server 或 Agent 启动脚本直接退出,日志里第一行就是JAVA_HOME is not set。原因是/etc/profile里的JAVA_HOME没有对 systemd 服务生效。systemd 不读/etc/profile,需要在 service 文件里显式指定。

# 编辑 Server 的 systemd 单元文件 systemctl edit cloudera-scm-server # 在打开的编辑器里添加以下内容 [Service] Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"

systemctl edit会创建一个 override 文件,不会覆盖原始单元文件。改完执行systemctl daemon-reload再重启服务。

报错二:Access denied for user 'scm'@'localhost'

现象是 Server 日志里反复出现数据库连接被拒。原因是db.properties里的密码和 MySQL 里实际创建的不一致,或者 MySQL 用户授权时用了'scm'@'localhost'但连接来源是 IP。

-- 检查现有用户和授权 SELECT user, host FROM mysql.user WHERE user = 'scm'; -- 如果 host 不对,补一个授权 GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'192.168.1.100' IDENTIFIED BY 'Scm@123456'; FLUSH PRIVILEGES;

MySQL 的授权是user@host组合,'scm'@'%'和'scm'@'localhost'是两个不同的账号。如果连接来源是 192.168.1.100,就必须有对应的 host 授权。

报错三:Port 7180 already in use

现象是 Server 启动失败,日志里说 7180 被占用。原因是之前装过 CM 没清干净,或者有其他服务占了 7180。

# 查找占用 7180 的进程 ss -tlnp | grep 7180 # 如果是残留的 java 进程,直接 kill kill -9 <PID> # 确认端口释放 ss -tlnp | grep 7180

ss -tlnp比netstat更快更准,-t看 TCP,-l看监听,-n不解析服务名,-p显示进程。找到 PID 后 kill 掉,再重启 CM Server。

5. 避坑与排查:装 CM 5.10.0 最容易翻车的五个点

5.1 主机名解析不一致导致 Agent 注册失败

现象:Agent 日志里一直报Failed to connect to server,但 Server 明明在跑,端口也通。

原因:Agent 配置里的server_host写的是主机名,但/etc/hosts里没有对应解析,或者解析到了 127.0.0.1。

解决:在所有节点的/etc/hosts里加上 Server 节点的 IP 和主机名映射,用getent hosts cm-server确认返回的是真实 IP 而不是回环地址。

5.2 数据库字符集不对导致初始化中断

现象:Server 首次启动时日志报Specified key was too long; max key length is 767 bytes。

原因:MySQL 的scm库用了latin1字符集,CM 建表时索引字段长度超限。

解决:删掉重建库,指定DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci。如果 MySQL 版本是 5.7 且innodb_large_prefix没开,还需要在my.cnf里加上innodb_large_prefix=ON和innodb_file_format=Barracuda。

5.3 解压后没改属主导致服务写日志失败

现象:Server 启动后立刻退出,日志目录是空的,systemctl status显示Permission denied。

原因:tar.gz 解压出来的文件属主是 root,cloudera-scm用户没有写权限。

解决:chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager,然后确认/var/log/cloudera-scm-server和/var/log/cloudera-scm-agent目录也存在且属主正确。

5.4 JDK 版本混用导致 Agent 心跳异常

现象:Agent 能注册,但心跳间隔越来越长,最后 Server 显示节点离线。

原因:系统里装了多个 JDK,JAVA_HOME指向了 JDK 11,CM 5.10.0 的 Agent 在 JDK 11 上跑会有兼容性问题。

解决:alternatives --config java确认默认 java 是 1.8,并在 systemd override 里显式指定JAVA_HOME为 JDK 8 路径。

5.5 防火墙没关导致 Web UI 打不开

现象:Server 日志显示Started Jetty,但浏览器访问http://cm-server:7180超时。

原因:firewalld 还在跑,7180 端口没放行。

解决:systemctl stop firewalld && systemctl disable firewalld,或者用firewall-cmd --add-port=7180/tcp --permanent放行后再firewall-cmd --reload。

6. 装完怎么验证:从端口、日志到 Web UI 走一遍

装完 CM 5.10.0 之后,别急着点下一步。我一般会按顺序做四层验证,每一层都过了再进 Web UI 操作。

第一层,确认进程和端口。Server 和 Agent 的进程都要在,7180、7182、7183 三个端口都要监听。

# 检查 CM 相关进程 ps -ef | grep -E 'cloudera-scm-(server|agent)' | grep -v grep # 检查关键端口 ss -tlnp | grep -E '7180|7182|7183'

7180是 Web UI 和 API 端口,7182是 Agent 心跳端口,7183是 Agent 控制端口。三个都监听才算正常。如果 7180 在但 7182 不在,说明 Server 的 Agent 通信模块没起来,去日志里搜AgentCommunication。

第二层,看日志里有没有ERROR或FATAL。Server 日志在/var/log/cloudera-scm-server/cloudera-scm-server.log,Agent 日志在/var/log/cloudera-scm-agent/cloudera-scm-agent.log。

# 统计 Server 日志里的错误数量 grep -c 'ERROR' /var/log/cloudera-scm-server/cloudera-scm-server.log # 查看最近的错误详情 grep 'ERROR' /var/log/cloudera-scm-server/cloudera-scm-server.log | tail -20

如果错误数量是 0,基本没问题。如果有错误,看具体内容。常见的非致命错误包括Connection reset by peer(Agent 重连时的正常现象)和Timeout waiting for(首次启动时的超时,后面会恢复)。真正致命的是Access denied、Table doesn't exist、Port already in use这几类。

第三层,用 curl 直接访问 API 确认 Server 响应正常。

# 访问 CM 的 API 版本接口,应该返回 JSON curl -s http://cm-server:7180/api/version # 预期输出类似 {"version":"v18"}

/api/version不需要认证,能返回 JSON 就说明 Server 的 Web 模块完全就绪。如果返回Connection refused,说明 Jetty 没起来;如果返回 401,说明认证模块有问题,但至少 HTTP 层是通的。

第四层,浏览器打开http://cm-server:7180,默认用户名和密码都是admin。登录后应该能看到 CM 的首页,左侧导航栏有Clusters、Hosts、Diagnostics等菜单。如果页面能打开但菜单加载不出来,检查浏览器控制台有没有跨域报错,通常是 Server 的db.properties里host写成了localhost导致 API 返回的地址不对。

验证通过后,我习惯把当前状态记一笔:systemctl status cloudera-scm-server和systemctl status cloudera-scm-agent的输出各存一份,db.properties和config.ini各备份一份。后面如果调参调坏了,直接回滚这两个文件再重启,比从头装一遍快得多。从那以后我每次装 CM 都强制走一遍这四层验证,不看到/api/version返回 JSON 绝不往下点。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 3:36:32

Praat语音分析实操指南:F0提取、音节标注与自动化质检

简介&#xff1a;这是一份面向语音学研究者、语言学专业学生及声调语言&#xff08;如汉语&#xff09;学习者的 Praat 中文入门与进阶学习手册&#xff0c;系统解决语音信号分析、声学参数测量、声调韵律建模等核心实践问题。资源以 HTML 页面形式组织&#xff0c;共214个网页…

作者头像 李华
网站建设 2026/10/21 3:35:32

手写4×4矩阵类:嵌入式与图形学中的零依赖实现

简介&#xff1a;本资源是一个面向C初学者与课程实验者的矩阵类封装实践项目&#xff0c;聚焦44双精度浮点矩阵的完整面向对象实现&#xff0c;解决线性代数基础运算在C中手动编码复杂、易出错的问题。项目以Matrix_4x4类为核心&#xff0c;涵盖默认/拷贝/数组参数化构造函数&a…

作者头像 李华
网站建设 2026/10/21 3:34:41

YOLO11-C3k2-ConverseB:足球小目标检测优化实践

搞目标检测的人应该有个共识&#xff1a;一场足球比赛视频&#xff0c;可能是计算机视觉最容易让模型当场破防的场景之一。镜头拉远的时候&#xff0c;场上的球员缩成一小团&#xff1b;特写推进之后&#xff0c;同一个球员直接顶满画面&#xff0c;而足球依然只有几十个像素。…

作者头像 李华
网站建设 2026/10/21 3:33:46

基于YOLOv12/v11/v8/v5的密集人群行人检测实战复盘

1. 项目全貌&#xff1a;为何要专门做“密集人群”检测听到“基于深度学习的密集人群行人检测”这个名字&#xff0c;很多第一次接触的朋友会想&#xff1a;这不就是普通的目标检测套个框架吗&#xff1f;真把项目做进去以后你会发现&#xff0c;密集人群和普通检测完全是两种难…

作者头像 李华
网站建设 2026/10/21 3:33:44

Agent工程化分水岭:OpenClaw与VibeCoding双引擎实战

1. 写在 2026 门前的技术复盘&#xff1a;那句“Agent元年”我们喊早了2025 年一整年&#xff0c;我身边的开发者几乎没有不聊 Agent 的。从年初各家大模型厂商密集释放长上下文和工具调用能力&#xff0c;到年中的 MCP 协议被当成“AI 时代的 USB-C”来讨论&#xff0c;再到年…

作者头像 李华
网站建设 2026/10/21 3:32:51

版本选型方法论:如何判断哪个版本最稳定?

“哪个版本最稳定&#xff1f;”这恐怕是我近十年在技术社区、项目群、饭局上被问到最多的一句话。问的人有刚入门半年的初级运维&#xff0c;也有负责几十套生产系统的技术负责人&#xff1b;问的对象小到一个基础依赖库&#xff0c;大到数据库和操作系统。每次被问到&#xf…

作者头像 李华