Cloudera Manager单节点部署NODE1安装指南:CDH 6.x集群搭建核心步骤

发布时间:2026/10/12 16:34:09
Cloudera Manager单节点部署NODE1安装指南:CDH 6.x集群搭建核心步骤 1. 为什么单节点部署 Cloudera Manager 是集群搭建的关键一步搞过大数据平台的人都知道CDH 这套东西虽然现在社区版已经不再更新了但存量项目里用得还是相当多尤其是那些早年搭建、至今仍在稳定跑着离线任务和实时链路的集群。我接触过的几个数据平台底层清一色是 CDH 6.x有的是 6.0有的是 6.1差别不大核心组件版本略有不同而已。而整个集群搭建过程中Cloudera Manager 的安装是整个部署流程的分水岭——装好了后面添加节点、分配角色、启动服务都是界面点点点的事装不好后面每一步都是坑。标题里特别强调了一句“只需要在 NODE1 做”这句话看着简单但背后其实藏着一个很重要的架构认知Cloudera Manager 采用的是Server-Agent 架构Server 端只需要部署在一个节点上也就是我们常说的管理节点而 Agent 端则需要在集群中每一台受管节点上安装。很多人第一次搭 CDH 的时候不理解这个设计觉得“为什么不能每台机器都装一个 Server 互相备份”结果折腾半天发现根本行不通。所以这篇文章我就围绕这个核心点把 Cloudera Manager 在 NODE1 上的完整安装过程拆开来讲包括前置准备、安装方式选型、具体操作步骤、参数配置逻辑以及我自己踩过的那些坑。这篇文章适合谁看如果你正在搭建 CDH 6.0 或 6.1 集群手头有一批服务器等着装环境或者你之前装过一次但过程稀里糊涂、想彻底搞明白每一步在干什么那这篇内容应该能帮到你。我会尽量把“为什么这么做”讲清楚而不是只丢一堆命令让你复制粘贴。毕竟安装过程本身不算特别复杂真正让人头疼的是那些文档里不写、但实际一定会遇到的问题。2. 安装前的整体设计与方案选型2.1 为什么 Cloudera Manager 只装在 NODE1先把这个核心问题说透。Cloudera Manager 的架构本质上是一个集中式管理平台它由三个部分组成Server服务端、Agent代理端、Database数据库。Server 负责整个集群的协调、监控、配置下发和服务生命周期管理Agent 安装在每台受管主机上负责执行 Server 下发的指令并上报本机状态Database 则存储所有的配置信息、监控数据和审计日志。Server 和 Database 只需要一份通常放在同一个节点上也就是 NODE1。Agent 则是每台机器都要有。这个设计的好处很直接管理入口统一不会出现多个 Server 争抢状态导致数据不一致的问题。你可以把它理解成一个公司的管理层——CEO 只有一个但每个部门都有对接人。如果设两个 CEO下面的人听谁的所以“只需要在 NODE1 做”不是偷懒而是架构本身的要求。那 NODE1 需要什么样的配置根据我的经验如果集群规模在 10 台以内NODE1 给16 核 CPU、64GB 内存、500GB 以上 SSD是比较稳妥的。Cloudera Manager Server 本身占不了太多资源但它背后的 PostgreSQL 或 MySQL 数据库、以及监控数据的积累会随着时间增长。内存太小的话跑一段时间后 Web 界面会明显变卡。磁盘一定要用 SSD因为监控数据的写入频率很高机械盘容易成为瓶颈。2.2 安装方式的选择离线包 vs 在线仓库Cloudera Manager 的安装方式主要有两种一种是通过 Cloudera 官方仓库在线安装另一种是下载离线包手动部署。这两种方式我都用过各有适用场景。在线安装的好处是简单配好 yum 源之后一条命令就能搞定适合网络环境好、能稳定访问外部仓库的场景。但问题是很多生产环境是内网隔离的根本连不出去这时候就只能走离线包。而且即使网络能通在线安装的下载速度也不一定稳定装到一半断掉的情况我遇到过不止一次。离线包的方式稍微麻烦一点需要提前下载好 Cloudera Manager 的 parcel 包和对应的 manifest 文件然后搭建一个本地的 HTTP 服务来分发。但它的优势在于可控性强——版本固定、不依赖外网、可以重复使用。对于生产环境我一般推荐离线方式因为一次准备好之后后面扩容或者重装都能直接用。这里有个细节需要注意CDH 6.0 和 6.1 对应的 Cloudera Manager 版本是不一样的。6.0 对应的是 CM 6.0.x6.1 对应的是 CM 6.1.x。版本必须匹配不能混用否则后面添加服务的时候会出现兼容性问题。我见过有人用 CM 6.1 去管理 CDH 6.0 的 parcel结果分配角色时一直报错排查了半天才发现是版本不匹配。2.3 数据库的选型考量Cloudera Manager Server 需要一个数据库来存储元数据。官方支持 PostgreSQL、MySQL 和 Oracle。Oracle 在企业环境里用得多但配置相对复杂而且需要额外的授权。PostgreSQL 和 MySQL 都是免费开源的选哪个都行。我个人的偏好是PostgreSQL原因是 Cloudera 官方文档里对 PostgreSQL 的支持描述最详细而且 PostgreSQL 在处理并发写入时的表现比较稳定。MySQL 也不是不行但需要注意字符集和连接数的配置尤其是max_connections这个参数默认值往往不够用Cloudera Manager 在运行过程中会创建不少连接。数据库可以和 Cloudera Manager Server 装在同一台机器上也就是 NODE1。对于中小规模集群这样部署完全没问题。但如果集群规模超过 50 台建议把数据库独立出来避免资源争抢。不过这是后话了大部分场景下 NODE1 单机搞定就行。3. 核心细节解析与实操要点3.1 系统层面的前置准备在装 Cloudera Manager 之前NODE1 上有一堆系统层面的东西需要先处理好。这些东西看着琐碎但少做一步后面就可能卡住。首先是主机名和 hosts 解析。NODE1 的主机名要设置成 FQDN 格式比如node1.cluster.local这种不要用简单的node1。因为 Cloudera Manager 在通信时会用完整域名如果 hosts 文件里没配好Agent 注册的时候会失败。我一般会在所有节点的/etc/hosts里把集群所有机器的 IP 和主机名都写进去这样不依赖 DNS 也能正常解析。然后是防火墙和 SELinux。这两个是安装过程中最常见的拦路虎。Cloudera Manager 需要用到很多端口比如 7180Web UI、7182Agent 通信、7432数据库等等。手动开端口太麻烦我通常直接关掉防火墙和 SELinux等装完再根据实际需要收紧策略。命令很简单systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config还有时间同步。集群里所有节点的时间必须一致否则监控数据会乱掉证书校验也可能出问题。用 chronyd 或者 ntpd 都行确保 NODE1 和其他节点的时间差在秒级以内。最后是JDK 的安装。Cloudera Manager 6.x 需要 JDK 8不支持 JDK 11。而且必须是 Oracle JDK 或者 OpenJDK 的特定版本太新的版本可能会有兼容性问题。我一般用 OpenJDK 1.8.0_xxx装好之后设置好JAVA_HOME环境变量并且在/usr/java/下创建一个默认的软链接因为 Cloudera Manager 的某些脚本会去这个路径找 Java。3.2 数据库的初始化配置数据库这块需要做几件事安装数据库软件、创建 Cloudera Manager 专用的数据库和用户、导入初始表结构。以 PostgreSQL 为例安装完之后需要创建一个名为scm的数据库和一个名为scm的用户密码自己设定。然后需要调整一些数据库参数比如max_connections至少设为 100shared_buffers根据内存大小调整。这些参数在/var/lib/pgsql/data/postgresql.conf里修改。创建完数据库后需要导入 Cloudera Manager 提供的建表脚本。这个脚本在 Cloudera Manager 的安装包里有路径通常是/opt/cloudera/cm/schema/scm_prepare_database.sh。执行这个脚本的时候需要提供数据库类型、主机名、数据库名、用户名和密码脚本会自动创建表结构并配置 Cloudera Manager 的数据库连接信息。注意这个脚本执行一次就够了重复执行会报错说表已存在。如果确实需要重新初始化得先把数据库删掉重建。3.3 Cloudera Manager Server 的安装到了正式安装 Cloudera Manager Server 的环节。如果用在线方式先配置好 yum 源然后执行yum install cloudera-manager-daemons cloudera-manager-server这两个包一个是守护进程一个是服务端主程序。安装过程会自动处理依赖关系但前提是 yum 源配置正确。如果用的是离线包需要先挂载或者解压安装介质然后通过rpm或者yum localinstall来安装。安装完成后Cloudera Manager Server 的服务文件会出现在/etc/init.d/cloudera-scm-server配置文件在/etc/cloudera-scm-server/目录下。其中最重要的是db.properties文件里面记录了数据库的连接信息。如果之前用scm_prepare_database.sh脚本配置过这个文件应该已经自动生成好了。启动服务之前建议先检查一下/etc/cloudera-scm-server/db.properties里的内容是否正确特别是数据库密码有没有特殊字符导致解析问题。我遇到过一次密码里带了#号结果配置文件把它当成注释了服务一直起不来。后来把密码改成纯字母数字组合就好了。启动命令systemctl start cloudera-scm-server启动过程需要一点时间因为它要初始化数据库连接、加载配置、启动内部服务。可以通过查看日志来确认进度tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log当日志里出现Started Jetty server或者Server started之类的字样时说明服务已经起来了。这时候就可以通过浏览器访问http://NODE1_IP:7180来打开 Cloudera Manager 的 Web 界面了。默认的用户名和密码都是admin。3.4 Agent 端的安装准备虽然标题说“只需要在 NODE1 做”但这里有个容易混淆的地方Cloudera Manager Server 确实只装在 NODE1但 Agent 是每台节点都要装的。不过 Agent 的安装通常不需要手动操作而是在 Web 界面里通过“添加主机”向导来批量推送安装。所以严格来说NODE1 上做的是 Server 的安装其他节点的 Agent 安装是后续步骤。但有一个例外情况如果 NODE1 本身也要作为受管节点通常都是这样那 NODE1 上也需要装 Agent。这个 Agent 可以在安装 Server 的时候一起装也可以后面通过向导装。我一般是在装 Server 的时候顺便把 Agent 也装上命令是yum install cloudera-manager-agent装完之后不需要手动启动等 Server 端的向导来触发就行。4. 实操过程与核心环节实现4.1 完整安装流程的逐步拆解我把整个安装过程按实际操作顺序梳理一遍你可以跟着一步步来。第一步确认 NODE1 的基础环境登录 NODE1检查主机名、hosts、防火墙、SELinux、JDK、时间同步这些是否都处理好了。可以用以下命令快速检查hostname -f cat /etc/hosts systemctl status firewalld getenforce java -version chronyc sources每一项都要确认无误。特别是hostname -f的输出必须是 FQDN 格式如果只显示短主机名说明 hosts 文件里没有配对应的解析记录。第二步安装并配置数据库以 PostgreSQL 为例yum install postgresql-server postgresql-contrib postgresql-setup initdb systemctl start postgresql systemctl enable postgresql然后切换到 postgres 用户创建数据库和用户su - postgres psql CREATE DATABASE scm; CREATE USER scm WITH PASSWORD your_password; GRANT ALL PRIVILEGES ON DATABASE scm TO scm; \q接着调整pg_hba.conf允许 Cloudera Manager Server 从本机连接数据库。找到local和host相关的行把认证方式改成md5或trust。改完之后重启 PostgreSQL。第三步初始化 Cloudera Manager 的数据库执行建表脚本/opt/cloudera/cm/schema/scm_prepare_database.sh postgresql scm scm your_password如果脚本提示找不到说明 Cloudera Manager 的包还没装。所以这一步其实应该在安装完 Server 包之后再做。顺序上可以调整先装包再初始化数据库最后启动服务。第四步安装 Cloudera Manager Server 和 Agentyum install cloudera-manager-daemons cloudera-manager-server cloudera-manager-agent安装完成后确认/etc/cloudera-scm-server/db.properties里的数据库连接信息正确。第五步启动 Cloudera Manager Serversystemctl start cloudera-scm-server systemctl enable cloudera-scm-server查看日志确认启动成功tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log第六步访问 Web 界面浏览器打开http://NODE1_IP:7180用admin/admin登录。如果能正常看到界面说明 Server 端安装成功。4.2 关键参数的计算与选择在安装过程中有几个参数需要根据实际情况来定不能随便填。数据库连接数Cloudera Manager Server 默认会创建大约 50 个数据库连接。如果 PostgreSQL 的max_connections设得太小默认是 100再加上其他服务的连接很容易不够用。我一般会把max_connections设为 200 以上。计算公式大概是基础连接数 50 每个受管服务约 5 个连接 × 服务数量。比如集群要跑 HDFS、YARN、Hive、HBase 等 10 个服务那就是 50 50 100留点余量设 200 比较稳妥。JVM 堆内存Cloudera Manager Server 的 JVM 堆内存默认是 2GB对于中小集群够用。但如果集群规模超过 30 台建议调到 4GB。修改位置在/etc/cloudera-scm-server/下的环境变量文件里找到CMF_JAVA_OPTS或者类似的参数把-Xmx的值改大。Agent 心跳间隔Agent 默认每 15 秒向 Server 发送一次心跳。这个频率一般不用改但如果集群规模很大超过 100 台可以适当调大到 30 秒减轻 Server 端的压力。配置位置在 Agent 的配置文件里。4.3 实操现场记录与验证我最近一次在测试环境搭 CDH 6.1 的时候NODE1 用的是 16 核 64GB 的虚拟机CentOS 7.9 系统。整个安装过程大概花了 40 分钟其中大部分时间花在等数据库初始化和 Server 启动上。启动成功后Web 界面第一次加载会提示你接受许可协议、选择试用版还是正式版。这里选试用版就行功能上没有区别只是试用期 60 天。然后会进入集群安装向导引导你添加主机、分配 parcel、安装服务。有一个验证 Server 是否正常的小技巧在浏览器访问http://NODE1_IP:7180/cmf/health如果返回 JSON 格式的健康状态信息说明 Server 的 API 接口是通的。这个接口在后面做自动化运维的时候也会用到。另外安装完成后建议检查一下/var/log/cloudera-scm-server/目录下的日志看看有没有 ERROR 级别的记录。有些警告信息不影响使用但 ERROR 一定要处理。我见过一次因为数据库字符集问题导致部分表创建失败日志里报了 ERROR但 Web 界面看起来正常结果后面添加服务的时候才暴露出来。5. 常见问题与排查技巧实录5.1 安装过程中的典型报错与解决问题一Server 启动失败日志显示数据库连接被拒绝这个是最常见的问题。原因通常是数据库没启动、pg_hba.conf配置不对、或者密码错误。排查步骤先用psql -h localhost -U scm -d scm手动连接一下数据库确认能连上。如果连不上检查 PostgreSQL 服务状态和认证配置。如果手动能连上但 Server 连不上检查db.properties里的密码有没有特殊字符被转义。问题二Web 界面打不开提示连接超时先确认 Server 进程是否在运行systemctl status cloudera-scm-server。如果进程在但端口没监听用netstat -tlnp | grep 7180检查端口。如果端口没监听可能是 Server 启动过程中卡住了看日志找原因。如果端口监听了但外部访问不了检查防火墙规则。问题三Agent 注册失败提示证书错误Cloudera Manager 使用自签名证书进行 Server 和 Agent 之间的通信。如果 Agent 之前连接过其他 Server本地会缓存旧的证书导致新 Server 注册失败。解决方法是删除 Agent 的证书缓存目录rm -rf /var/lib/cloudera-scm-agent/*然后重启 Agent。问题四数据库初始化脚本执行报错常见原因是数据库用户权限不够。确保scm用户对scm数据库有全部权限并且能创建表。另外脚本执行时需要用 root 用户或者有 sudo 权限的用户因为它需要写入/etc/cloudera-scm-server/db.properties文件。5.2 独家避坑经验分享坑一主机名不要用下划线Cloudera Manager 对主机名的格式有要求只允许字母、数字和连字符下划线会导致 Agent 注册失败。我一开始不知道这个限制用了node_1这样的主机名结果折腾了好久才发现问题。后来改成node1就正常了。坑二/opt 目录空间要留够Cloudera Manager 的安装包、parcel 文件、日志都放在/opt目录下。如果/opt是独立分区且空间不足安装到一半会失败。建议/opt至少留 50GB 空间。如果不够可以提前把 parcel 的存储路径改到其他分区。坑三不要用 root 用户跑所有服务虽然安装 Cloudera Manager 本身需要 root 权限但后面添加服务的时候Cloudera Manager 会为每个服务创建独立的系统用户。如果之前手动用 root 跑过某些服务可能会和 Cloudera Manager 管理的服务冲突。所以装之前最好确认一下系统里没有残留的 Hadoop 相关进程。坑四时间同步不是可选项我遇到过因为 NODE1 和其他节点时间差了 5 分钟导致 Agent 心跳超时、服务状态显示异常的情况。时间同步一定要在安装前就配好而且要用同一个时间源。5.3 常见问题速查表问题现象可能原因排查方法解决方案Server 启动失败数据库连接问题查看 server.log检查 db.properties 和数据库状态Web 界面无法访问防火墙或端口未监听netstat 检查 7180 端口关闭防火墙或开放端口Agent 注册失败证书缓存冲突查看 agent.log清除 /var/lib/cloudera-scm-agent数据库初始化报错权限不足或已存在查看脚本输出检查用户权限或重建数据库主机名解析失败hosts 未配置hostname -f 检查补全 /etc/hosts 记录时间不同步未配置 NTP对比各节点时间配置 chronyd 统一时间源6. 安装完成后的下一步动作Cloudera Manager Server 在 NODE1 上装好、Web 界面能正常访问之后接下来的事情就是在界面里走集群安装向导了。向导会引导你添加其他节点、分发 CDH parcel、分配角色、启动服务。这些步骤虽然是在界面上操作但背后的逻辑和命令行安装是一样的理解了 Server-Agent 的架构之后操作起来会顺畅很多。有一点需要提醒在添加其他节点之前确保这些节点的基础环境主机名、hosts、防火墙、SELinux、JDK、时间同步都已经处理好。Cloudera Manager 的添加主机向导会做一次环境检查如果有问题会直接报出来。与其在向导里一个个修不如提前批量处理好省时省力。另外安装完成后建议把 NODE1 上的 Cloudera Manager 相关目录做个备份特别是/etc/cloudera-scm-server/和数据库的备份。后面如果要做升级或者迁移这些备份能省很多事。我自己就吃过亏有一次升级失败想回滚结果发现没备份配置文件只能从头重装。最后分享一个小技巧Cloudera Manager 的 Web 界面里有一个“诊断包”功能可以一键收集所有节点的日志和配置信息。遇到解决不了的问题时先收集诊断包然后慢慢分析比一个个节点登录去看日志效率高得多。这个功能在排查集群级别的问题时特别有用。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询