尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
CentOS 7部署Ambari 2.7.5+HDP 3.1.5完整指南:从环境准备到集群验证
以前我手动搭 Hadoop 集群的时候最头疼的就是各种组件版本对不上、配置改了同步不到所有节点、每台机器都要单独启动服务。后来换到 Ambari 管理之后部署 HDFS、YARN、Hive 这些组件基本就是在网页上勾选、分配、点安装整个过程会清晰非常多。这次要整理的是 CentOS 7 上装 Ambari 2.7.5 HDP 3.1.5 的完整过程。Ambari 负责集群的安装、配置、监控和告警HDP 是它管理的 Hadoop 发行版里面集成了 HDFS、YARN、ZooKeeper、Hive、HBase、Ranger 等一堆组件。这篇内容适合三类人第一次搭 Hadoop 环境的学习者、需要在离线或内网环境部署集群的运维、以及被各种安装报错折腾过想找排查思路的人。我会把自己踩过的坑和最后采用的稳妥做法都写清楚照着做基本能一次跑通。1. 为什么我在 CentOS 7 上锁定了这套版本组合1.1 Ambari 与 HDP 的版本对应关系不是随便配的Ambari 和 HDP 有严格的版本兼容关系不能想当然地拿最新 Ambari 去配旧 HDP或者反过来。Ambari 2.7.5 HDP 3.1.5 是 Hortonworks 在后期主推的组合之一两个版本在 CentOS 7 上有完整的安装包仓库和元数据支持踩坑少、资料多。当时我对比过几个组合Ambari 2.7.4 也能配 HDP 3.1.5但 2.7.5 修了一些 Agent 注册和数据源配置上的问题建议优先用 2.7.5。HDP 3.1.5 对应的是 Hadoop 3.x 生态比 HDP 2.6 那一代在 YARN 调度、HDFS 纠删码等方面变化非常大。如果你还在沿用 HDP 2.x 时代的老经验很多配置路径和组件名称都已经变了后面提到的内容都要按 3.1.5 来理解。1.2 这套组合适合什么规模的集群官方说 Ambari 可以管理大规模生产集群但我的实际建议是如果是学习或者内部测试集群规模控制在 3 到 10 台机器就够了。这种规模的集群用一套 Ambari Server 加若干 Agent 的模式非常合适。如果你需要管理几十台甚至几百台节点Ambari 还能用但需要考虑给 Ambari Server 独立的高可用方案同时数据库也要用外部 MySQL 或 PostgreSQL不能再用内嵌数据库。我这次部署的测试环境是三台 CentOS 7.9master1Ambari Server 部分 Master 组件worker1、worker2DataNode、NodeManager 等 Worker 角色如果你只有一台机器也可以做单机部署只是内存要特别注意。1.3 集群规划时最容易被低估的资源很多人装到一半发现卡死绝大多数原因是内存不够。Ambari Server 本身会跑一个 Java 进程默认堆内存 2G再加上 Agent 进程、PostgreSQL 数据库以及后续 HDFS、YARN、Hive 等服务的进程单机部署的话 8G 内存是比较稳妥的下限。我建议最好给 master 节点 8G 以上worker 节点 4G 以上。磁盘方面HDP 3.1.5 完整部署会下载大量 RPM仓库文件加上组件安装包预留 50G 以上空间比较安心。系统盘建议单独放数据盘可以后续在 Ambari 里配置给 HDFS DataNode 使用。2. 环境准备CentOS 7 基础设置里最容易埋雷的几个点2.1 主机名与 /etc/hosts 的一致性这是 Ambari 部署失败概率最高的一个点。Ambari Server 和 Agent 通信时会通过主机名互相识别而且要求是 FQDN也就是类似于master1.example.com这种完整域名格式。如果你只写了master1这种短主机名Agent 注册时经常出现主机名解析不到、Agent 状态一直显示 UNKNOWN 的情况。三台机器的/etc/hosts我建议统一写成这样192.168.100.10 master1.example.com master1 192.168.100.20 worker1.example.com worker1 192.168.100.30 worker2.example.com worker2同时每台机器执行hostnamectl set-hostname master1.example.com修改完以后一定重启systemd-hostnamed或者直接重启机器再用hostname -f验证一下。很多教程把这步一笔带过但一次集群几十个节点里面有两三台主机名不规范后面注册就会集体失败。2.2 SSH 免密登录与 root 限制Ambari 在创建集群时会用你在 Web 界面填写的 SSH 登录信息去目标主机上安装 Agent。它支持 root 密码、普通用户密码和私钥三种方式。最省事的是配 root 的 SSH 免密登录但如果你在严格环境下禁用 root 远程登录可以创建一个ambari-user赋予 sudo 权限。我实际操作时用的是 root 私钥方式。先在 Ambari Server 上生成密钥对ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N 然后把公钥分发到所有主机ssh-copy-id rootmaster1.example.com ssh-copy-id rootworker1.example.com ssh-copy-id rootworker2.example.com这一步还要确认/etc/ssh/sshd_config没有关闭公钥认证否则后面 Web 界面部署 Agent 时会提示 “Authentication failed”。2.3 防火墙、SELinux、时间同步这是一组基础项但每项都有坑。Ambari 的组件之间通信端口非常多如果开着 firewalld你会频繁遇到“启动失败”“连接拒绝”这类问题。开发测试环境我直接关掉防火墙systemctl stop firewalld systemctl disable firewalld生产环境不能随便关的话至少要放行下面这些端口端口用途8080Ambari Web UI8440、8441Ambari Agent 与 Server 通信22SSH3306外部 MySQL如果使用5432外部 PostgreSQL如果使用8020、50010、50020HDFS 相关端口8088、8042YARN 相关端口2181ZooKeeperSELinux 我建议先设为 permissive 或 disabledsetenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config时间同步看起来不起眼但很关键。Hadoop 组件尤其是 HDFS、Kerberos、ZooKeeper 对时间偏差非常敏感。所有节点统一安装 chronyyum install -y chrony systemctl enable --now chronyd然后用chronyc sources -v确认时间源正常。如果节点之间时间差超过几十秒HDFS 的块汇报和 YARN 的 NodeManager 注册都可能出问题。3. 先搭本地 Yum 仓库网络问题少一半3.1 为什么 Ambari 和 HDP 都必须有仓库Ambari 安装 HDP 时本质上是通过 yum 从仓库里拉取 RPM。仓库可能来自公网也可能来自内网。公网仓库虽然方便但生产环境里很多机器不能随便访问外网而且公网地址如果访问不稳定Web 向导会反复报错。把仓库搬到内网用 httpd 或者 Nginx 提供访问是成熟的做法。这里要理解一个结构Ambari 和 HDP 是两个独立的仓库。Ambari 仓库提供ambari-server和ambari-agent两个 RPMHDP 仓库提供 Hadoop 生态组件 RPM包括 HDFS、YARN、Hive、HBase 等。在 HDP 3.1.5 的 repo 文件里通常还包含 HDP-UTILS 仓库里面放的是底层工具库。三个仓库最好都准备齐。3.2 用 httpd 在 Ambari Server 上搭建内网源我是在 Ambari Server 这台机器上直接装 httpd 来提供仓库服务的。yum install -y httpd systemctl enable --now httpd然后创建目录结构mkdir -p /var/www/html/ambari mkdir -p /var/www/html/hdp mkdir -p /var/www/html/hdp-utils之后下载对应仓库的 RPM 数据到这些目录。如果你能访问公网的官方仓库最简单的方式是配置代理仓库后执行yum reposync把 RPM 同步下来。例如yum install -y yum-utils createrepo reposync -r Updates-2.7.5.0 -p /var/www/html/ambari/ reposync -r HDP-3.1.5.0 -p /var/www/html/hdp/ reposync -r HDP-UTILS-1.1.0.22 -p /var/www/html/hdp-utils/同步完成后为了让目录里生成 yum 元数据需要执行createrepo /var/www/html/ambari/Updates-2.7.5.0 createrepo /var/www/html/hdp/HDP-3.1.5.0 createrepo /var/www/html/hdp-utils/HDP-UTILS-1.1.0.22这一步很容易被忽略。如果你只是把 RPM 复制过去没有生成repodata目录客户端执行yum install时会提示找不到镜像列表。3.3 客户端的 repo 文件写法所有目标主机上在/etc/yum.repos.d/下创建仓库文件。我习惯分成三个文件方便排查# /etc/yum.repos.d/ambari.repo [Updates-2.7.5.0] nameAmbari-2.7.5.0 baseurlhttp://192.168.100.10/ambari/Updates-2.7.5.0/ enabled1 gpgcheck0# /etc/yum.repos.d/hdp.repo [HDP-3.1.5.0] nameHDP-3.1.5.0 baseurlhttp://192.168.100.10/hdp/HDP-3.1.5.0/ enabled1 gpgcheck0 [HDP-UTILS-1.1.0.22] nameHDP-UTILS-1.1.0.22 baseurlhttp://192.168.100.10/hdp-utils/HDP-UTILS-1.1.0.22/ enabled1 gpgcheck0写完后执行yum clean all yum repolist确认能看到三个仓库。如果看不到先检查 baseurl 里的路径是否能通过浏览器访问再检查防火墙。一个很常见的坑是 httpd 的默认根目录/var/www/html有权限限制确保目录是 755 权限RPM 文件是 644 权限。否则能列出目录却下载不了文件Ambari 会卡在安装阶段非常久。4. Ambari Server 的安装与初始配置4.1 安装 ambari-server 包并确认仓库版本仓库配置好之后在 Ambari Server 机器上直接安装yum install -y ambari-server安装完成后查看版本ambari-server --version正常会输出类似2.7.5.0-17的版本号。我建议出厂前先看一下。如果输出的是命令行帮助信息说明安装有问题检查 yum 仓库是否默认启用了多个 Ambari 版本导致装错了包。4.2 ambari-server setup 应答流程逐项拆解安装好后执行初始化ambari-server setup它有几个交互问题我逐条说一下选择理由。首先是Customize user account for ambari-server daemon默认是root。如果你不想让 Ambari Server 用 root 跑可以另建用户但要注意这个用户需要对/var/lib/ambari-server、/var/run/ambari-server有写权限。建议新手阶段直接用 root。接下来是 JDK 选择。Ambari 默认会用 Oracle JDK但 Oracle 的下载地址经常变导致自动下载失败。我这里的做法是提前用 yum 装 OpenJDKyum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel然后在 setup 时选择自定义 JDK填入/usr/lib/jvm/java-1.8.0-openjdk这里必须强调的是Ambari 2.7.5 依然推荐 JDK 8不要用 JDK 11 或更高版本。HDP 3.1.5 的很多组件在 JDK 11 下会有兼容性问题。然后是数据库配置。Enter advanced database configuration这里选择nAmbari 会使用默认的内嵌 PostgreSQL。如果你已经在用外部数据库选y再选择数据库类型和连接参数。我的测试环境直接用了内嵌 PostgreSQL省掉一个外部依赖。最后会显示Database user、Database password等默认值。密码自己设一个但要记住后面ambari-server setup重复执行时会用到。全部确认后初始化脚本会创建数据库表并启动服务。systemctl start ambari-server systemctl status ambari-server启动后立刻看日志tail -f /var/log/ambari-server/ambari-server.log日志里出现Server started之类的信息就说明启动成功。访问http://服务器IP:8080默认账号密码是admin/admin。第一次启动如果页面打不开优先检查 firewalld 是否拦截了 8080 端口。4.3 数据库选择与 JDBC 驱动隐患如果你后续在 HDP 集群里要部署 Hive、Ranger 或者 Hue元数据库通常不能再用 Ambari 内嵌的 PostgreSQL。最常用的是外部 MySQL 5.7。在 Ambari Server 上要把 MySQL JDBC 驱动复制到/usr/share/java/下并且执行ambari-server setup --jdbc-dbmysql --jdbc-driver/usr/share/java/mysql-connector-java-5.1.48.jar这一步很多人忘了。没有 JDBC 驱动的话后面创建 Hive 表或者 Ranger 初始化时会报找不到驱动而且报错只会出现在组件启动日志里表现非常隐蔽。5. 通过 Web 创建 HDP 集群从注册 Agent 到服务部署5.1 登录 Ambari 并注册主机节点浏览器登录 Ambari Web 后首页会提示创建集群。流程很清晰但有几个细节直接影响成败。点击 “Launch Install Wizard” 后第一步会让你选择 HDP 版本和仓库地址。这里要填HDP-3.1.5.0以及对应的仓库 baseurl。如果你按前面方法在内网做了仓库这里直接填http://192.168.100.10/hdp/HDP-3.1.5.0/和 HDP-UTILS 地址。接下来填写目标主机列表我用的是master1.example.com worker1.example.com worker2.example.com注意这里必须写 FQDN不要写 IP。Ambari 通过 SSH 去每台机器上安装 Agent如果 SSH 端口不是 22要在这里指定。然后选择认证方式我用的是Private Key选择 Ambari Server 上/root/.ssh/id_rsa对应的密钥内容粘贴进去。这一步实质是让 Ambari 使用 SSH 登录主机所以密钥和主机列表里每台机器都要匹配。之后点击Register and Confirm。Ambari 会自动登录每台主机、安装ambari-agent、启动 Agent并等 Agent 回连 Ambari Server。这个过程有 1 到 3 分钟。5.2 Agent 注册不上时的排查链路如果主机状态一直停在Registration in progress不要干等。去目标主机的 Agent 日志里看tail -f /var/log/ambari-agent/ambari-agent.log我遇到最多的情况是ERROR: Cannot connect to Ambari Server或者版本不匹配的报告。这时候先检查 Agent 里配置的服务器地址cat /etc/ambari-agent/conf/ambari-agent.ini确认hostnamemaster1.example.com是 Ambari Server 的 FQDN。另一个容易忽略的问题是 Agent 和 Server 的系统时间不一致会导致注册请求被当作过期请求拒绝。同步时间后重启 Agentsystemctl restart ambari-agent如果还不行在 Ambari Server 上执行ambari-agent status看 Agent 是否启动。Agent 没起来时通常是因为 Java 环境变量没配好检查目标机器的JAVA_HOME。注册成功的标志是 Web 界面显示所有主机为Registered并正常显示主机名、IP、CPU、内存等信息。5.3 创建集群并选择 HDP 3.1.5主机注册完成后进入Choose Services页面。Ambari 会根据默认推荐勾选一些服务。对于最普通的 Hadoop 测试环境我建议先选这些基础服务HDFSYARN MapReduce2ZooKeeperTezHivePigSqoopRanger、Knox、Ambari Metrics 这些可以先不选等基础跑通后再加上。Ambari 会把服务之间的依赖关系标出来如果你选了 Hive 却没选 Tez它会提示依赖缺失。接下来是Assign Masters。Ambari 会根据主机角色自动推荐分配方案我通常手动确认一下把 NameNode、ResourceManager、HiveServer2 这些 Master 角色都放在 master1 上把 DataNode、NodeManager 放在 worker1 和 worker2 上。再到Assign Slaves and Clients页面勾选每台主机要运行的角色。DataNode 和 NodeManager 就是这里的 Slave 角色。然后是Customize Services这里包含所有服务的配置项。我一般会重点看这几个HDFS 的数据目录是否指向数据盘YARN 的内存参数是否符合节点实际内存Hive 的元数据库连接是否配置正确5.4 安装过程的常见报错与处理点击Deploy后Ambari 会在所有主机上并行安装组件 RPM、改写配置、启动服务。这个过程最常出现的问题如下。第一种是Cannot retrieve repository metadata。这说明目标主机访问不到你在前面配置的仓库 baseurl。先在目标主机上用curl测试仓库地址如果通再确认仓库文件里是否开启gpgcheck0。Ambari 生成的仓库配置有时会带 gpg 校验而仓库里没有上传公钥就会失败。第二种是组件启动失败后Web 界面显示红色状态。这时要看具体组件的日志。比如 HDFS 的 NameNode 起不来先看tail -f /var/log/hadoop/hdfs/hadoop-hdfs-namenode-master1.log最常见的原因是 NameNode 格式化没做或者 HDFS 的目录没有正确归属到hdfs用户。Ambari 在安装过程中一般会自动完成格式化但如果失败就需要到/etc/hadoop/conf/检查配置文件再用hdfs namenode -format手动格式化。第三种是 YARN 的 NodeManager 注册不上。ResourceManager 界面里 NodeManager 数量迟迟不到预期值。这个问题的排查链和 Agent 注册类似时间不同步、节点间无法通过 FQDN 互相解析、防火墙拦截了 8042 端口。逐项检查基本都能解决。6. 装完之后我做的几件事6.1 验证 HDFS 和 YARN 是否真的可用Ambari 界面上所有组件显示绿色并不代表真的通了。我会在 master1 上执行几个基础命令验证。创建测试目录hdfs dfs -mkdir /test hdfs dfs -put /etc/hostname /test/hostname hdfs dfs -cat /test/hostname看一下 HDFS 的 Web UIhttp://master1.example.com:50070确认 Active NameNode 正常数据块数量和 DataNode 数量一致。提交一个 YARN 任务验证调度yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 2 100这个任务会计算圆周率的近似值如果 MapReduce 跑通YARN 的调度和 NodeManager 的心跳就基本正常了。6.2 修改默认密码和基础告警Ambari 默认账号admin/admin一定第一时间改掉。在 Ambari Server 上执行ambari-admin-password-reset输入新密码即可。否则 Web 界面暴露在网络上等于裸奔。告警方面Ambari 自带了一组默认告警比如 DataNode 存活、NodeManager 存活、HDFS 容量告警等。我会进Alerts菜单把邮件通知或者 SNMP 通知配置好。Ambari 的告警阈值也可以调默认的 HDFS 容量阈值是 80%生产环境建议调低。6.3 后续运维需要留意的盘子问题这套组合在 CentOS 7 上我已经跑了一段时间整体稳定但有几件事必须养成习惯。第一不要随便在系统里手动改 Hadoop 配置文件。Ambari 会把配置集中管理你手动改了某个组件的core-site.xml下次 Ambari 做配置下发或者重启服务时会把你的改动覆盖掉。正确的做法是到 Ambari Web 的服务配置页修改然后点击重启影响的服务。第二Ambari Server 的 PostgreSQL 数据库要定期备份。里面存了集群的配置历史、告警状态、主机信息一旦损坏恢复成本非常高。我一般直接 cron 备份pg_dump -U ambari -h localhost ambari /backup/ambari_$(date %F).sql第三日志需要常清。HDP 组件默认日志路径在/var/log/hadoop、/var/log/hive、/var/log/yarn等目录时间长了很占空间。写一个 crontab 做临时文件的清理是很有必要的。最后再说一个不太常被提到的技巧Ambari 里很多服务在 Web 界面上点击重启后进程起不来的原因并不是配置错误而是因为旧进程没有完全退出。如果遇到端口占用、Pid 文件冲突之类的问题先去对应主机ps -ef | grep java清掉残留进程再回 Ambari 里启动成功率会高很多。安装和运维这类问题很多时候都是基础环境不干净而不是组件本身坏了。
RELATED

相关推荐

光网络保护APS从原理到实战:配置、倒换验证与避坑指南

光网络保护APS从原理到实战:配置、倒换验证与避坑指南

简介:光网络保护APS技术介绍PPT学习教案,是一份面向光通信网络工程师、运维人员及相关专业学生的教学课件,系统讲解自动保护切换(APS)的核心原理与应用场景。内容包括保护倒换的必要性、网络保护与恢复的区别、光层保护…

📅 2026/10/5 3:33:44
OpenShell 命令行增强:模块化配置与上下文感知实践

OpenShell 命令行增强:模块化配置与上下文感知实践

1. 从零认识 OpenShell:它到底解决什么问题第一次听到 OpenShell 这个名字,很多人会下意识把它和“终端”“命令行”联系起来。没错,它确实和命令行体验有关,但如果你只把它当成又一个终端模拟器,那就低估它了。OpenSh…

📅 2026/10/5 3:33:44
C#文字修仙游戏源码解析:从架构拆解到二次开发实战

C#文字修仙游戏源码解析:从架构拆解到二次开发实战

简介:这是一份面向C#初学者与毕业设计学生的文字修仙游戏完整源码,以WinForms桌面程序形式实现,帮助读者理解游戏主循环、场景管理、数据持久化与事件驱动等核心开发流程。压缩包共75个文件、约2MB,以15个cs源码文件为主体&#x…

📅 2026/10/5 3:33:44
MORE NEWS

更多资讯

📰

8款AI论文写作软件实测:自考论文从选题到降重全流程推荐

自考本、专升本、成人本科的朋友们,写到论文这一关,是不是感觉比考十门课还头疼?选题没方向、大纲不会列、正文憋不出来、查重还得一降再降,关键是身边没人能帮你逐句改。我自己当年就是被论文折腾掉一层皮,所以这两年…

📰

社区医院管理系统实战:SpringBoot+Vue+MyBatis+MySQL架构解析

1. 项目概述与系统定位1.1 这套系统的核心价值与适用人群做社区医院管理系统,和做电商、OA这类系统完全不是一个思路。社区医院的业务流非常固定:挂号、分诊、门诊、收费、发药、留观,再加上医保结算和日常统计报表,流程清晰但环节…

📰

燃料电池混合动力汽车能量管理:ADMM双层凸优化Matlab实践

“ADMM”“双层凸优化”“Matlab”这三个词往燃料电池混合动力汽车上一叠,很多人第一反应是:这又是一篇纯堆数学的论文复现,跟工程没什么关系。我去年做燃料电池能量管理策略时,恰好把这套框架从文献里的公式一路跑到Matlab可仿真…

📰

Python堆与heapq:TopK、优先队列与内存优化实战

前阵子帮一个做日志分析的同事改代码,他那段程序要从每天上亿条请求日志里捞出响应时间最长的100条。第一版实现特别直白:全量解析完排个序,再切片取前100。结果呢?近一亿条记录解析完直接吃掉16G内存,光排序就跑了40多…

📰

高质量数据集构建与治理:从定义到落地的全流程实践

这两年,凡是做AI的,几乎没有谁没被“垃圾进,垃圾出”这句话扎过心。模型结构换了一茬又一茬,算力也堆了不少,最后发现决定效果上限的,往往就是你喂进去的数据。高质量数据集的构建和治理,也从后…

📰

Linux进程间通信实战:管道、共享内存与信号量的选型与陷阱

先说一个我早年间遇到的真实场景:一台采集服务器上跑了四个分析进程,每隔几秒就要从主进程手里取一批日志数据。最开始我图省事,直接用文件落地加轮询,结果不仅因为文件锁搞得调度顺序乱,还白白多了很多磁盘IO。后来老…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬