Hadoop 一键部署脚本

发布于 2026-09-02 12:50 更新于 2026-10-13 17:14 2499 字 13 min read ... 访问量 AI 生成 文章内容主要由 AI 生成,可能存在不准确或不完整的情况,请自行判断。 AI 审阅 文章内容已由 AI 审阅过,但仍需谨慎判断。

AI 审阅 文章内容已由 AI 审阅过,但仍需谨慎判断。

这篇文章介绍了一套Hadoop生态集群的一键部署脚本,通过统一配置文件和自动化流程,简化了ZooKeeper、Hadoop HA、Spark、HBase、Hive、Kafka、Flume、Mahout、Flink等组件的安装、分发与启动过程。脚本支持三节点高可用架构,自动完成配置生成、SSH免密分发、服务启动与健康检查,并提供可视化日志和运维菜单,显著降低部署难度和出错风险。

Hadoop 生态集群一键部署

如果你是第一次搭 Hadoop 全家桶(ZooKeeper、Hadoop HA、Spark、HBase、Hive、Kafka、Flume、Mahout、Flink),大概率经历过这种痛苦:每装一个组件都要看一篇文章、改一堆 xml、来回 scp 分发、启动顺序错了还要从头排查……整套搭下来没个一两天搞不定。

这是一套一键部署脚本:把配置全部收敛到一个文件里,上传到主节点,跑一条命令,脚本会自动完成所有组件的安装、初始化、分发和启动。日常的启停、自检、看日志也都有菜单,不用再记一堆命令。

这套脚本能装什么

组件版本说明
JDK8u181所有节点
ZooKeeper3.8.5所有节点组成集群
Hadoop3.4.0HA 模式:3 NameNode + 3 ResourceManager + JournalNode + ZKFC 自动故障转移
Spark3.4.3Standalone 集群,兼容 YARN,并自动做好 Hive on Spark 集成
HBase2.6.0分布式多 HMaster
Hive4.0.1MySQL 存元数据,Spark 做执行引擎
Kafka3.4.0每节点一个 broker
Flume1.9.0agent + 双 Collector 故障转移,采集日志落 HDFS
Mahout14.1机器学习客户端工具
Flink1.18.0YARN Session 模式,ZooKeeper 做 HA

以默认的三节点 hadoop01 / hadoop02 / hadoop03 为例,角色分布大概是这样:

  • hadoop01(主节点):MySQL、Hive、NameNode(nn1,默认 Active)、ResourceManager(rm1,默认 Active)、ZooKeeper、Spark Master、HBase 主 HMaster、Kafka broker 1、Flume agent、Mahout、Flink 客户端;
  • hadoop02 / hadoop03:NameNode(Standby)、ResourceManager、JournalNode、DataNode、NodeManager、ZooKeeper、Spark Worker、HBase 备用 HMaster + RegionServer、Kafka broker 2/3、Flume collector1/2。

也就是说三台机器互相冗余,NameNode / ResourceManager 挂了可以自动切换,Flume 主 Collector 挂了数据会切到备用 Collector。

工作原理(30 秒看懂)

infographic sequence-zigzag-steps-underline-text
data
  title Hadoop 集群自动部署流程
  desc 从 Windows 本机上传部署文件,由主节点统一配置并分发至其他节点
  items
    - label Windows 本机
      desc 使用 upload.ps1 / scp 上传 deploy/ 和 installer/

    - label 主节点 hadoop01
      desc 文件统一存放于 /export/deploy/

    - label 统一配置
      desc config/cluster.conf 作为集群唯一配置入口

    - label 执行部署
      desc components/00~90.sh 按顺序执行,并使用 conf/*.tpl 渲染配置

    - label 其他节点
      desc 主节点通过 ssh / scp 分发文件,各节点完成安装和服务启动

theme
  palette
    - #3b82f6
    - #6366f1
    - #8b5cf6
    - #06b6d4
    - #10b981

脚本内部主要做三件事:

  1. 读配置:所有节点、IP、版本、端口、密码、内存参数都在 cluster.conf 一个文件里;
  2. 渲染配置:每个组件的官方配置文件(core-site.xml、hive-site.xml、server.properties 等)都做成了模板,脚本按节点动态生成;
  3. 分发与执行:主节点通过 SSH 免密把目录分发到其他节点(tar 流式传输),再逐台启动服务并等待端口就绪。

所有运行日志都会写到 /export/deploy/log/,每个组件一个文件,出问题不用靠猜。

环境准备

建议准备三台全新安装的 Ubuntu 服务器(apt/yum 系统都兼容,但 Ubuntu/Debian 体验最好),并且满足:

  • 三台机器内网互通,主机名建议直接叫 hadoop01/02/03(脚本也会自动设置主机名);
  • 每台机器至少有能 SSH 登录的管理员账号(Ubuntu 默认禁止 root SSH,用 ubuntu 这类有 sudo 权限的账号);
  • 内存尽量 ≥ 16 GB / 节点(脚本默认给 YARN NodeManager 8 GB、Flink TaskManager 4 GB,小机器记得调低);
  • 磁盘给足:离线安装包大约 3 GB,HDFS 数据还要单独占空间;
  • 主节点能访问外网 apt 源;如果本地不放安装包,还需要能访问华为云镜像等下载站。

Step 1:修改集群配置

从仓库克隆代码后(或直接下载 zip),打开 deploy/config/cluster.conf,这是全流程唯一需要大改的文件:

# 节点列表与 IP(顺序一一对应)
NODES=(hadoop01 hadoop02 hadoop03)
NODE_IPS=(192.168.52.131 192.168.52.132 192.168.52.133)
MASTER_NODE=hadoop01

# 远程节点的管理员账号(首次 SSH 引导用,三台密码一致)
REMOTE_ROOT_USER="ubuntu"
REMOTE_ROOT_PASSWORD="你的远程管理员密码"

# 脚本会创建的业务用户 hadooper 的密码
HADOOPER_PASSWORD="你的业务用户密码"

# MySQL root 密码、Hive 元数据库账号
MYSQL_ROOT_PASSWORD=root123456
HIVE_DB_NAME=hive
HIVE_DB_USER=hive
HIVE_DB_PASSWORD=hive123456

下面这几组也可以按需调整:组件版本文件名(必须和 installer/ 里的包一致)、各组件端口、各服务启动内存、组件安装目录(默认 /export/servers)。

⚠️ 仓库里自带的是演示密码,公开仓库请改成自己的,别把真实密码提交上去。

Step 2:准备安装包(可选,但强烈建议)

脚本的安装包策略是「三级兜底」:

  1. 集群 /export/software 里已有 → 直接用;
  2. 仓库本地 installer/ 目录有 → 上传时一起复制过去;
  3. 都没有 → 主节点自动从华为云镜像 / Apache 官网 wget 下载。

也就是说你什么都不放也能装,只是下载 Hadoop、Flink 这些大包会比较慢。建议提前把 cluster.conf 里列出的压缩包下载好、按文件名放进 installer/ 目录,上传一次搞定,部署速度快很多。

Step 3:上传到主节点

先在主节点上建好目录(如果还没有):

sudo mkdir -p /export && sudo chown -R $(whoami) /export

Windows 上直接用仓库自带的 PowerShell 脚本:

./upload.ps1 -HostName 192.168.52.131 -User root

upload.ps1 会把 deploy/ 和 installer/ 整个传到主节点的 /export/ 下,-User 换成你能 SSH 登录主机的账号即可。不想用脚本就手动 scp:

scp -r deploy installer ubuntu@192.168.52.131:/export/

Step 4:一条命令开始部署

SSH 登录主节点,执行:

cd /export/deploy
sudo bash main.sh install

脚本会按下面的顺序自动完成 13 个阶段:

安装包检查 → 基础环境 → JDK → MySQL → ZooKeeper → Hadoop HA
→ Spark → HBase → Hive → Kafka → Flume → Mahout → Flink

部署期间你在终端会看到每一步的实时日志:

  • 安装包检查:先确认所有安装包可用,缺了就自动下载;
  • 基础环境:配置 hosts 和主机名、创建 hadooper 用户、创建 /export/、三台机器配置 SSH 免密、关闭防火墙、调大文件句柄和进程数限制。注意:如果主机名有变化,脚本会提示先重启三台机器再继续;
  • JDK / MySQL:JDK 分发到所有节点;MySQL 只装在主节点,并自动建好 Hive 元数据库和账号;
  • ZooKeeper:三台组成集群,自动写 myid 并等选举完成;
  • Hadoop HA:首次安装会自动格式化 NameNode、初始化 QJM 共享 edits、bootstrap standby、启动 ZKFC 并切主。这里耗时最长,耐心等;
  • Spark / HBase / Hive:Spark Standalone 集群;HBase 主备 HMaster + RegionServer;Hive 自动初始化元数据 schema 并和 Spark 双向集成(把依赖 jar 拷到 HDFS);
  • Kafka / Flume:每节点一个 broker;Flume 先启两个 collector 再启 agent,Agent 采集主节点上的 weblog.log 写入 HDFS;
  • Mahout / Flink:Mahout 是纯客户端工具;Flink 以 YARN Session 方式启动,HA 状态放 ZooKeeper,元数据存 HDFS。

全部装完后脚本会自动按依赖顺序把所有服务启动起来。整个过程 20 分钟到 1 小时不等,主要取决于安装包下载速度和机器性能。

Step 5:验证部署结果

一键自检

sudo bash main.sh status   # 各组件进程/状态总览
sudo bash main.sh test     # 各组件自检

test 不是简单 ping 一下,而是真的跑业务验证:

  • HDFS:写文件、读文件、查 HA 状态;
  • Spark:提交 SparkPi;
  • HBase:建表 → put → get → scan → 删表;
  • Hive:beeline 连 HiveServer2 执行 show databases;
  • Kafka:创建 topic、生产、消费;
  • Flume:往 weblog.log 写数据 → 验证 HDFS 文件增长 → 故意杀掉主 Collector → 验证备用 Collector 接管 → 自动恢复;
  • Flink:提交 WordCount 到 YARN Session 并检查 HDFS 输出。

浏览器确认

默认配置下可以直接访问:

服务地址
HDFS(NameNode)http://hadoop01:9870
YARN(ResourceManager)http://hadoop01:8088
Spark Masterhttp://hadoop01:8082
HBase Masterhttp://hadoop01:16010

Flink 的 Web UI 通过 YARN 页面(8088)点进对应 Application 查看。

日常运维

不用记复杂命令,全部通过主菜单完成:

cd /export/deploy && sudo bash main.sh

主菜单提供:

1) 一键部署全部       5) 集群状态总览
2) 一键启动全部       6) 安装包检查/补全
3) 一键停止全部       7) 按组件操作(二级菜单)
4) 一键测试全部       8) 查看日志

也可以直接敲命令,比如只处理 Hadoop:

sudo bash main.sh start                       # 全部启动
sudo bash components/20_hadoop.sh status      # 只看 Hadoop
sudo bash components/50_hive.sh test          # 只测 Hive
sudo bash components/70_flume.sh menu         # 进入 Flume 菜单

每个组件脚本都支持 install / start / stop / test / status / log / menu 这几种动作,名字就是 00_packages.sh 到 90_flink.sh,看编号就能对上依赖顺序。

出问题先看日志:

tail -f /export/deploy/log/*.log

日志按组件分文件:hadoop.log、hive.log、flink.log……菜单里也能直接选着看。

避坑指南(都是脚本里已经处理过的坑)

  1. Ubuntu 不能直接 SSH root:远程节点请填有 sudo 权限的普通账号,如 ubuntu;
  2. 改了主机名要重启:基础环境那一步执行完如果提示主机名变化,先重启三台再继续,否则后面 SSH、hosts 会乱;
  3. 安装包不要放错文件名:cluster.conf 里的 *_TAR 变量必须和 installer/ 里实际文件名一致,否则脚本会当作缺失重新下载;
  4. Hadoop 别手滑重复格式化:脚本默认有保护(已有格式化标记就跳过),想彻底重建才用 FORCE=1 sudo bash components/20_hadoop.sh install;
  5. 单组件失败不用全量重来:修好问题后单独重跑失败的那个组件即可,其他组件不受影响;
  6. Flume 需要至少 3 台机器:agent 和两个 collector 各占一台,少于 3 台就别装 Flume;
  7. 资源别给太抠:默认 YARN NodeManager 8 GB、Flink TaskManager 4 GB,小内存机器先改 cluster.conf 里的内存参数再部署;
  8. 离线环境:把安装包装进 installer/ 一起上传,MySQL 等系统包仍需要本地 apt 源。

执笔 AI 生成

喜欢的话,留下你的评论吧~

加载中...