Acceldata ODP (Open Data Platform )3.3.6.4 (RHEL9 )保姆级完整安装手册
环境说明
- 系统:RHEL 9.2 / 9.4 x86_64(必须 RHEL9,CentOS Stream9 也可兼容,Rocky9 测试可用)
- ODP 版本:3.3.6.4,Python3 + JDK17 栈(重点!不要 JDK8)
- 架构:Ambari Server 1 台 + Ambari Agent 多台(Hadoop 集群节点)
- 模式:在线 yum 源安装;文末附带离线 RPM 部署差异
- 账号:全程使用 root 执行(所有节点)
- 前置约定:
- ambari-server 主机 FQDN:odp-master01.example.com IP:192.168.1.100
- agent 节点:odp-node01.example.com(192.168.1.101)、odp-node02.example.com(192.168.1.102)
你需要把下面所有示例主机名、IP 替换成你自己集群的真实信息
⚠️ 重要硬性规则(不满足后面 100% 报错)
- 主机名不能带下划线、大写字母、空格 ,不能是localhost
- 所有节点 FQDN 必须互相 ping 通,DNS 或者 /etc/hosts 解析
- 所有节点时间同步,时间差必须<1 秒
- 所有节点 root 密码一致(方便免密 ssh,可选但强烈推荐)
第 0 步:规划清单(先填好,再动手!)
表格
| 角色 | 主机名 FQDN | IP | 数据盘目录 |
|---|---|---|---|
| Ambari Server | odp-master01.example.com | 192.168.1.100 | /data1 |
| Agent1 | odp-node01.example.com | 192.168.1.101 | /data1,/data2 |
| Agent2 | odp-node02.example.com | 192.168.1.102 | /data1,/data2 |
数据目录:提前建好,mkdir -p /data1,权限chmod 755 /data1,不要用 root 挂载权限 777
第一部分:【所有节点统一执行】基础环境准备
一共 N 台机器,每一台都要执行下面全部命令,master 也属于集群节点,也要执行
1.1 修改主机名(每个节点单独执行,改成自己的 FQDN )
master节点执行
hostnamectl set-hostname odp-master01.example.com
node01节点执行
hostnamectl set-hostname odp-node01.example.com
node02节点执行
hostnamectl set-hostname odp-node02.example.com
新开终端,hostname 查看是否生效
1.2 配置 /etc/hosts 全集群解析(所有节点都要写一模一样的 hosts )
vi /etc/hosts
写入内容(替换成你自己 IP 和主机名)
192.168.1.100 odp-master01.example.com odp-master01
192.168.1.101 odp-node01.example.com odp-node01
192.168.1.102 odp-node02.example.com odp-node02
保存退出 ESC → :wq
验证:每台机器 ping 所有 FQDN,必须通
1.3 关闭 SELinux (永久关闭,所有节点)
临时关闭
setenforce 0
永久关闭
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
查看状态,确认是disabled
getenforce
1.4 关闭防火墙 firewalld (测试环境直接关;生产环境后面单独放端口)
systemctl stop firewalld
systemctl disable firewalld
验证
systemctl status firewalld
1.5 系统 ulimit 配置(Hadoop 必须,所有节点)
vi /etc/security/limits.conf
文件末尾追加下面内容
* soft nofile 102400
* hard nofile 102400
* soft nproc 65535
* hard nproc 65535
生效方式:重新登录 ssh 会话,重新登录后用ulimit -n验证,输出 102400 才算成功
1.6 内核参数优化(所有节点)
vi /etc/sysctl.conf
追加:
vm.swappiness=10
net.ipv4.tcp_syncookies=1
加载生效
sysctl -p
1.7 时间同步 chrony (所有节点,必须!时间不一致集群直接起不来)
dnf install chrony -y
systemctl enable --now chronyd
查看同步状态,System time : synchronized 才算成功
chronyc tracking
1.8 开启 RHEL9 CRB 源 + 安装 epel 、基础依赖包(所有节点)
RHEL9 必须开启 CRB(旧叫 PowerTools),否则很多依赖包找不到
dnf config-manager --enable crb
dnf install -y epel-release wget curl net-tools tar unzip openssl-devel openssh-clients
1.9 创建数据目录(所有节点,按你的规划)
示例:
mkdir -p /data1 /data2
chmod 755 /data1 /data2
第二部分:仅 Ambari Server 节点(odp-master01 )配置免密 SSH
目标:ambari-server 节点 root 可以免密 ssh 登录所有 agent 节点(包括自己)
1.生成ssh密钥,一路回车,不要设置密码
ssh-keygen -t rsa
2.分发公钥到每一台节点,输入对应节点root密码
ssh-copy-id root@odp-master01.example.com
ssh-copy-id root@odp-node01.example.com
ssh-copy-id root@odp-node02.example.com
✅ 验证免密(master 节点执行,不需要输密码就是成功)
ssh root@odp-node01.example.com hostname
ssh root@odp-node02.example.com hostname
第三部分:【所有节点】配置 Acceldata ODP yum 源
所有节点,master + 所有 agent 都执行!
下载官方repo文件
wget https://mirror.odp.acceldata.dev/v2/odp/python3/jdk17/3.3.6.4-1/repofiles/rhel9/ambari-odp-1.repo -O /etc/yum.repos.d/ambari-odp-1.repo
清理缓存,重建yum元数据
dnf clean all
dnf makecache
检查源是否识别,能看到odp相关仓库即正常
dnf repolist enabled | grep odp
如果网络访问 mirror.odp.acceldata.dev 超时,就切换离线部署方案,后面单独讲
第四部分:【仅 Ambari Server 节点】安装 ambari-server
4.1 安装 ambari-server RPM 包
dnf install -y ambari-server
校验是否装上
rpm -qa | grep ambari-server
4.2 ambari-server setup 交互式初始化(重点!一步一步看选项)
ambari-server setup
逐项回答:
- Customize user account for ambari-server daemon? y/n n → 使用默认 ambari 用户
- Enter choice (1): 1 → Install JDK
- Select JDK version:
必须选 JDK17 !!ODP3.3.6.4 RHEL9 栈只能 JDK17 ,不要 JDK8
- JDK 安装路径默认即可
- Database setup:
测试环境:n,使用内嵌 PostgreSQL,简单省事 生产环境:y,外置 PostgreSQL15,需要提前建好库、用户、授权
- Proceed with customizations y/n: y 确认开始自动部署数据库、配置文件
⚠️ 外置 PostgreSQL 简要前置(生产用,测试跳过)
create database ambari;
create user ambari with encrypted password '你的密码';
grant all privileges on database ambari to ambari;
4.3 启动 ambari-server 并设置开机自启
systemctl enable ambari-server
systemctl start ambari-server
查看状态,running才算正常
ambari-server status
✅ 访问 Web 界面 浏览器打开:http://192.168.1.100:8080 默认账号:admin 密码:admin
打不开排查:防火墙是否关闭;8080 端口是否监听 ss -tlnp | grep 8080
第五部分:【所有 Agent 节点(含 master 如果也要做 agent )】安装 ambari-agent
集群所有数据节点、master 如果也要部署组件,全部执行下面命令
dnf install -y ambari-agent
5.1 修改 agent 配置,指向 ambari-server FQDN
vi /etc/ambari-agent/conf/ambari-agent.ini
找到 server 段落,修改 hostname
server
hostname = odp-master01.example.com
port = 8440
保存退出
5.2 启动 ambari-agent ,开机自启
systemctl enable ambari-agent
systemctl start ambari-agent
查看状态
ambari-agent status
agent 正常会显示:Agent is running and waiting for registration
第六部分:Ambari Web UI 向导部署 ODP 3.3.6.4 (最容易踩坑环节,一步一步点)
打开 http://<masterIP>:8080,admin/admin 登录
Step1 Launch Install Wizard
点击 Launch Install Wizard,输入集群名字,例如 odp-cluster → Next
Step2 Install Options (节点列表 + 私钥)
- Target Hosts:把所有集群 FQDN 一行一个粘贴进去
- Host Registration Information 选择 Provide your private key
在 master 节点,复制 root 私钥内容:cat /root/.ssh/id_rsa 把输出全部文本粘贴到框内 不要粘贴公钥 id_rsa.pub!!是私钥 id_rsa
- 勾选:Perform repository search on hosts → Next
这里 Ambari 会自动连接所有节点,检测主机、yum 源、依赖。全部节点绿色对勾才可以下一步,有红色报错必须先解决,不要强行继续!
Step3 Choose Version
选择版本:ODP 3.3.6.4 (RHEL9, Python3, JDK17) 在线模式:直接选 Use existing repositories 离线模式:勾选 Local Repository,上传 VDF 文件,填写本地 yum 源地址 Next
Step4 Choose Services
勾选你需要安装的大数据组件,推荐最小起步:
- Zookeeper
- HDFS
- YARN + MapReduce2
- Spark
- Hive
Kafka、Ozone、NiFi 按需勾选,不需要就取消,减少部署时间 Next
Step5 Assign Masters (分配主角色)
把 NameNode、ResourceManager、Hive Metastore 等主组件分配到对应主机,一般主节点放 master 机器。
注意:一个组件只能选一台机器,不要重复分配 Next
Step6 Assign Slaves and Clients
DataNode、NodeManager 等从节点,勾选所有数据节点。 Next
Step7 Customize Services 【重点配置】
逐个服务修改参数:
- JDK 路径:确认是 JDK17 路径
- HDFS:
- NameNode 目录:/data1/hadoop/namenode
- DataNode 目录:/data1/hadoop/datanode,/data2/hadoop/datanode
- YARN:NodeManager 本地目录 /data1/yarn/nm-local-dir
所有目录必须提前建好,权限 755,否则安装报错
- 内存配置:根据服务器内存调整,不要超过物理内存
内存参数如果看不懂,先用默认值,部署完再调 Next
Step8 Review
核对所有主机、组件分配,确认无误 → Deploy
Step9 等待部署执行
页面会实时滚动日志,分阶段:
- 在所有节点安装 ODP 组件 RPM 包
- 配置所有组件
- 格式化 HDFS
- 启动所有服务
中途失败:看日志,大部分是:host 解析错误、目录不存在、权限不对、yum 源无法下载包、时间不同步。修复后重试。
✅ 全部成功:所有服务状态绿色 Started
Step10 安装后校验(UI )
每个服务点进去 → Actions → Run Service Check,全部服务检查通过。
第七部分:命令行验证(master 节点执行)
查看hadoop版本
hadoop version
spark版本
spark-submit --version
查看安装的ODP rpm包
rpm -qa | grep odp
hdfs基础测试
hdfs dfs -mkdir /test
hdfs dfs -ls /
第八部分:离线 RPM 包部署完整步骤(无外网场景)
场景:集群不能访问外网 mirror.odp.acceldata.dev
- 找一台能上网的 RHEL9 机器,下载全部 RPM 包
安装下载工具
dnf install yumdownloader createrepo -y
下载ODP3.3.6.4全套rpm
yumdownloader --resolve --destdir=/odp-rpm https://mirror.odp.acceldata.dev/v2/odp/python3/jdk17/3.3.6.4-1/releases/rhel9/
- 把/odp-rpm目录拷贝到内网 http 服务器(如 nginx)
- 在 rpm 目录执行 createrepo 生成 yum 元数据
createrepo /odp-rpm
- 修改 ambari-odp-1.repo,修改 baseurl 为内网 http 地址,gpgcheck=0
- 所有节点分发这个修改后的 repo 文件,dnf clean all && dnf makecache
- 后续 ambari-server/agent 安装 + UI 部署流程和在线一模一样
第九部分:高频踩坑清单(保姆级排错)
- ❌ Ambari 注册 agent 失败
- 检查:/etc/hosts FQDN、免密 ssh 是否正常、agent.ini 里 hostname 写的是 FQDN 不是 IP
- ❌ DataNode 启动失败
- 缺少 bigtop-jsvc 包:dnf install bigtop-jsvc -y
- 数据目录权限错误、目录不存在
- ❌ yum makecache 失败
- 外网不通;离线场景 baseurl 写错;RHEL9 CRB 源没开
- ❌ 集群部署卡在下载 RPM 包
- 网络问题,切换离线部署
- ❌ JDK 版本错误
- ODP3.3.6.4 RHEL9 栈强制 JDK17,不要装 JDK8,会出现 Hive/Spark 各种异常
- ❌ 时间不同步 chrony 没装好,节点时间差超过 1 秒 → ZK、HDFS 不停报错
第十部分:生产环境防火墙端口放行(不关闭 firewalld 时使用)
Ambari Server
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=8440/tcp
firewall-cmd --permanent --add-port=8441/tcp
HDFS
firewall-cmd --permanent --add-port=50070/tcp
firewall-cmd --permanent --add-port=50075/tcp
firewall-cmd --permanent --add-port=50010/tcp
YARN
firewall-cmd --permanent --add-port=8088/tcp
firewall-cmd --permanent --add-port=8042/tcp
ZK
firewall-cmd --permanent --add-port=2181/tcp
firewall-cmd --reload
附赠:一键前置检查脚本(所有节点直接执行,输出检查报告)
#!/bin/bash
echo "=====主机名检查====="
hostname
cat /etc/hosts
echo -e "\n=====SELinux状态====="
getenforce
echo -e "\n=====防火墙状态====="
systemctl status firewalld
echo -e "\n=====ulimit====="
ulimit -n
ulimit -u
echo -e "\n=====时间同步====="
chronyc tracking
echo -e "\n=====yum源检查====="
dnf repolist enabled | grep odp
保存为 precheck.sh,chmod +x precheck.sh && ./precheck.sh