1. 首页 > Hadoop教程 > 正文

大数据教程FG136-大数据集群自动化运维实战

本教程主要介绍大数据集群自动化运维的方法和实战技巧,包括自动化部署、配置管理、监控告警等内容。风哥教程参考bigdata官方文档运维指南、自动化工具说明等相关内容。

通过本教程的学习,您将掌握大数据集群的自动化运维方法,提高运维效率和集群稳定性。

目录大纲

Part01-基础概念与理论知识

1.1 自动化运维概述

大数据集群自动化运维是指通过自动化工具和脚本,实现集群的部署、配置、监控、告警等运维工作的自动化,主要包括:

  • 自动化部署:自动安装和配置集群组件
  • 配置管理:集中管理集群配置,确保配置的一致性
  • 监控告警:实时监控集群状态,及时发现和处理问题
  • 自动化脚本:编写自动化脚本,实现日常运维任务的自动化
  • 故障处理:自动检测和处理集群故障

自动化运维可以提高运维效率,减少人为错误,确保集群的稳定运行,学习交流加群风哥微信: itpux-com

1.2 自动化运维工具

常用的自动化运维工具:

  • 配置管理工具:Ansible、Puppet、Chef、SaltStack等
  • 监控工具:Prometheus、Grafana、Zabbix、Nagios等
  • 日志管理工具:ELK Stack、Graylog、Splunk等
  • 容器管理工具:Docker、Kubernetes等
  • CI/CD工具:Jenkins、GitLab CI、GitHub Actions等
  • 自动化脚本:Shell脚本、Python脚本等

1.3 自动化运维流程

自动化运维流程:

  • 需求分析:分析运维需求,确定自动化目标
  • 工具选择:选择适合的自动化工具
  • 环境准备:准备自动化环境,包括工具安装和配置
  • 脚本编写:编写自动化脚本,实现运维任务的自动化
  • 测试验证:测试自动化脚本,确保其正确性
  • 部署实施:部署自动化脚本,实现运维任务的自动化
  • 监控维护:监控自动化脚本的运行状态,及时处理问题

Part02-生产环境规划与建议

2.1 自动化运维规划

风哥提示:自动化运维规划应根据集群规模和业务需求,制定合理的自动化运维计划,确保自动化运维的有效性。

自动化运维规划建议:

  • 目标设定:明确自动化运维的目标,如提高效率、减少错误等
  • 范围确定:确定自动化运维的范围,如部署、配置、监控等
  • 工具选择:选择适合的自动化工具,如Ansible、Prometheus等
  • 团队培训:对运维团队进行培训,提高自动化运维技能
  • 实施计划:制定详细的实施计划,确保自动化运维的顺利实施

2.2 自动化运维架构设计

自动化运维架构设计建议:

  • 分层架构:采用分层架构,包括基础设施层、工具层、应用层等
  • 集中管理:集中管理配置、监控、告警等信息
  • 标准化:标准化配置和流程,确保一致性
  • 可扩展性:设计可扩展的架构,支持集群规模的增长
  • 安全性:确保自动化运维的安全性,如权限控制、加密等

2.3 自动化运维策略制定

自动化运维策略制定建议:

  • 部署策略:制定自动化部署策略,确保部署的一致性和可靠性
  • 配置策略:制定配置管理策略,确保配置的一致性和可追溯性
  • 监控策略:制定监控策略,确保及时发现和处理问题
  • 告警策略:制定告警策略,确保及时通知和处理问题
  • 故障处理策略:制定故障处理策略,确保及时恢复服务

Part03-生产环境项目实施方案

3.1 自动化部署

配置自动化部署:

# 1. Ansible自动化部署
## 1.1 安装Ansible
yum install -y ansible

## 1.2 配置Ansible主机清单
vi /etc/ansible/hosts
[hadoop-master]
fgedu01 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu

[hadoop-slaves]
fgedu02 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu
fgedu03 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu

[hadoop:children]
hadoop-master
hadoop-slaves

## 1.3 编写Ansible playbook
vi hadoop-deploy.yml

– hosts: hadoop
become: yes
tasks:
– name: 安装Java
yum: name=java-1.8.0-openjdk-devel state=present

– name: 创建目录
file: path={{ item }} state=directory owner=fgedu group=fgedu
with_items:
– /bigdata/app
– /bigdata/fgdata
– /bigdata/fgdata/logs

– name: 复制Hadoop安装包
copy: src=/tmp/hadoop-3.3.5.tar.gz dest=/bigdata/app/

– name: 解压Hadoop安装包
unarchive: src=/bigdata/app/hadoop-3.3.5.tar.gz dest=/bigdata/app/ remote_src=yes

– name: 配置环境变量
lineinfile: dest=/etc/profile line={{ item }}
with_items:
– export HADOOP_HOME=/bigdata/app/hadoop-3.3.5
– export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 2. 执行Ansible playbook
ansible-playbook hadoop-deploy.yml

3.2 配置管理

配置配置管理:

# 1. Ansible配置管理
## 1.1 编写配置管理playbook
vi hadoop-config.yml

– hosts: hadoop
become: yes
tasks:
– name: 配置core-site.xml
template: src=core-site.xml.j2 dest=/bigdata/app/hadoop-3.3.5/etc/hadoop/core-site.xml

– name: 配置hdfs-site.xml
template: src=hdfs-site.xml.j2 dest=/bigdata/app/hadoop-3.3.5/etc/hadoop/hdfs-site.xml

– name: 配置yarn-site.xml
template: src=yarn-site.xml.j2 dest=/bigdata/app/hadoop-3.3.5/etc/hadoop/yarn-site.xml

– name: 配置mapred-site.xml
template: src=mapred-site.xml.j2 dest=/bigdata/app/hadoop-3.3.5/etc/hadoop/mapred-site.xml

# 2. 编写配置模板
## 2.1 core-site.xml.j2
vi core-site.xml.j2
fs.defaultFS
hdfs://{{ groups[‘hadoop-master’][0] }}:9000
hadoop.tmp.dir
/bigdata/fgdata/tmp

## 2.2 hdfs-site.xml.j2
vi hdfs-site.xml.j2
dfs.replication
3
dfs.namenode.name.dir
/bigdata/fgdata/hdfs/namenode
dfs.datanode.data.dir
/bigdata/fgdata/hdfs/datanode

## 2.3 yarn-site.xml.j2
vi yarn-site.xml.j2
yarn.resourcemanager.hostname
{{ groups[‘hadoop-master’][0] }}
yarn.nodemanager.aux-services
mapreduce_shuffle

## 2.4 mapred-site.xml.j2
vi mapred-site.xml.j2
mapreduce.framework.name
yarn

# 3. 执行配置管理playbook
ansible-playbook hadoop-config.yml

3.3 监控告警

配置监控告警:

# 1. Prometheus监控
## 1.1 安装Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz
tar -xzf prometheus-2.43.0.linux-amd64.tar.gz
mv prometheus-2.43.0.linux-amd64 /bigdata/app/prometheus

## 1.2 配置Prometheus
vi /bigdata/app/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

rule_files:
– “rules/*.yml”

alerting:
alertmanagers:
– static_configs:
– targets: [‘localhost:9093’]

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘localhost:9090’]

– job_name: ‘node_exporter’
static_configs:
– targets: [‘fgedu01:9100’, ‘fgedu02:9100’, ‘fgedu03:9100’]

– job_name: ‘hadoop_hdfs’
static_configs:
– targets: [‘fgedu01:9870’]

– job_name: ‘hadoop_yarn’
static_configs:
– targets: [‘fgedu01:8088’]

# 2. 安装Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 /bigdata/app/node_exporter

# 3. 安装Grafana
yum install -y grafana
systemctl start grafana-server
systemctl enable grafana-server

# 4. 配置告警规则
vi /bigdata/app/prometheus/rules/alert.yml
groups:
– name: node_alerts
rules:
– alert: HighCPUUsage
expr: 100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU usage on {{ $labels.instance }}”
description: “CPU usage is above 80% for 5 minutes”

– alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes – node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High memory usage on {{ $labels.instance }}”
description: “Memory usage is above 80% for 5 minutes”

– alert: HighDiskUsage
expr: (node_filesystem_size_bytes{mountpoint=”/”} – node_filesystem_free_bytes{mountpoint=”/”}) / node_filesystem_size_bytes{mountpoint=”/”} * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High disk usage on {{ $labels.instance }}”
description: “Disk usage is above 80% for 5 minutes”

Part04-生产案例与实战讲解

4.1 Ansible自动化部署实战

案例:Ansible自动化部署Hadoop集群

# 安装Ansible

$ yum install -y ansible

# 配置Ansible主机清单

$ vi /etc/ansible/hosts
[hadoop-master]
fgedu01 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu

[hadoop-slaves]
fgedu02 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu
fgedu03 ansible_ssh_user=fgedu ansible_ssh_pass=fgedu

[hadoop:children]
hadoop-master
hadoop-slaves

# 编写Ansible playbook

$ vi hadoop-deploy.yml

– hosts: hadoop
become: yes
tasks:
– name: 安装Java
yum: name=java-1.8.0-openjdk-devel state=present

– name: 创建目录
file: path={{ item }} state=directory owner=fgedu group=fgedu
with_items:
– /bigdata/app
– /bigdata/fgdata
– /bigdata/fgdata/logs

– name: 复制Hadoop安装包
copy: src=/tmp/hadoop-3.3.5.tar.gz dest=/bigdata/app/

– name: 解压Hadoop安装包
unarchive: src=/bigdata/app/hadoop-3.3.5.tar.gz dest=/bigdata/app/ remote_src=yes

– name: 配置环境变量
lineinfile: dest=/etc/profile line={{ item }}
with_items:
– export HADOOP_HOME=/bigdata/app/hadoop-3.3.5
– export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 执行Ansible playbook

$ ansible-playbook hadoop-deploy.yml

PLAY [hadoop] ******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

TASK [安装Java] *****************************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

TASK [创建目录] *****************************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

TASK [复制Hadoop安装包] *********************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

TASK [解压Hadoop安装包] *********************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

TASK [配置环境变量] *************************************************************
ok: [fgedu01]
ok: [fgedu02]
ok: [fgedu03]

PLAY RECAP *********************************************************************
fgedu01 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
fgedu02 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
fgedu03 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

4.2 Prometheus监控告警实战

案例:Prometheus监控Hadoop集群

# 安装Prometheus

$ wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.43.0.linux-amd64.tar.gz
$ mv prometheus-2.43.0.linux-amd64 /bigdata/app/prometheus

# 配置Prometheus

$ vi /bigdata/app/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

rule_files:
– “rules/*.yml”

alerting:
alertmanagers:
– static_configs:
– targets: [‘localhost:9093’]

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘localhost:9090’]

– job_name: ‘node_exporter’
static_configs:
– targets: [‘fgedu01:9100’, ‘fgedu02:9100’, ‘fgedu03:9100’]

– job_name: ‘hadoop_hdfs’
static_configs:
– targets: [‘fgedu01:9870’]

– job_name: ‘hadoop_yarn’
static_configs:
– targets: [‘fgedu01:8088’]

# 安装Node Exporter

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.5.0.linux-amd64.tar.gz
$ mv node_exporter-1.5.0.linux-amd64 /bigdata/app/node_exporter

# 启动Node Exporter

$ /bigdata/app/node_exporter/node_exporter &

# 启动Prometheus

$ /bigdata/app/prometheus/prometheus –config.file=/bigdata/app/prometheus/prometheus.yml &

# 访问Prometheus界面

# 打开浏览器,访问 http://fgedu01:9090

4.3 自动化运维脚本实战

案例:自动化运维脚本编写

#!/bin/bash
# hadoop_auto_ops.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

# 功能:Hadoop集群自动化运维脚本
# 包括:启动服务、停止服务、检查状态、清理日志等

echo “===== Hadoop集群自动化运维脚本 =====”

echo “1. 启动Hadoop服务”
echo “2. 停止Hadoop服务”
echo “3. 检查Hadoop服务状态”
echo “4. 清理Hadoop日志”
echo “5. 查看Hadoop集群信息”
echo “6. 退出”

read -p “请选择操作:” choice

case $choice in
1)
echo “启动Hadoop服务…”
start-dfs.sh
start-yarn.sh
echo “Hadoop服务启动完成”
;;
2)
echo “停止Hadoop服务…”
stop-yarn.sh
stop-dfs.sh
echo “Hadoop服务停止完成”
;;
3)
echo “检查Hadoop服务状态…”
jps
hdfs dfsadmin -report
yarn node -list
echo “Hadoop服务状态检查完成”
;;
4)
echo “清理Hadoop日志…”
rm -rf /bigdata/fgdata/logs/*
echo “Hadoop日志清理完成”
;;
5)
echo “查看Hadoop集群信息…”
hdfs dfsadmin -report
yarn node -list
yarn application -list
echo “Hadoop集群信息查看完成”
;;
6)
echo “退出脚本”
exit 0
;;
*)
echo “无效选择,请重新选择”
;;
esac

# 执行自动化运维脚本

$ chmod +x hadoop_auto_ops.sh
$ ./hadoop_auto_ops.sh
===== Hadoop集群自动化运维脚本 =====
1. 启动Hadoop服务
2. 停止Hadoop服务
3. 检查Hadoop服务状态
4. 清理Hadoop日志
5. 查看Hadoop集群信息
6. 退出
请选择操作:3
检查Hadoop服务状态…
23456 NameNode
23678 DataNode
23890 SecondaryNameNode
24123 ResourceManager
24345 NodeManager
24567 Jps
Configured Capacity: 30963660800 (28.85 GB)
Present Capacity: 27867295744 (25.96 GB)
DFS Remaining: 27867293696 (25.96 GB)
DFS Used: 2048 (2 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

Live datanodes (3):

Name: 192.168.1.10:9866 (fgedu01)
Hostname: fgedu01
Decommission Status : Normal
Configured Capacity: 10321220266 (9.62 GB)
DFS Used: 683 (683 B)
Non DFS Used: 1032122026 (984 MB)
DFS Remaining: 9289100557 (8.65 GB)
DFS Used%: 0.00%
DFS Remaining%: 90.00%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Apr 08 10:00:00 CST 2026

Name: 192.168.1.11:9866 (fgedu02)
Hostname: fgedu02
Decommission Status : Normal
Configured Capacity: 10321220266 (9.62 GB)
DFS Used: 682 (682 B)
Non DFS Used: 1032122026 (984 MB)
DFS Remaining: 9289100558 (8.65 GB)
DFS Used%: 0.00%
DFS Remaining%: 90.00%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Apr 08 10:00:00 CST 2026

Name: 192.168.1.12:9866 (fgedu03)
Hostname: fgedu03
Decommission Status : Normal
Configured Capacity: 10321220266 (9.62 GB)
DFS Used: 683 (683 B)
Non DFS Used: 1032122026 (984 MB)
DFS Remaining: 9289100557 (8.65 GB)
DFS Used%: 0.00%
DFS Remaining%: 90.00%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Apr 08 10:00:00 CST 2026
Total Nodes:3
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
fgedu01:45454 RUNNING fgedu01:8042 0
fgedu02:45454 RUNNING fgedu02:8042 0
fgedu03:45454 RUNNING fgedu03:8042 0
Hadoop服务状态检查完成

Part05-风哥经验总结与分享

5.1 常见问题解决方案

常见问题解决方案:

  • Ansible执行失败:检查网络连接,确保主机可达,检查Playbook语法
  • 监控数据采集失败:检查监控服务状态,确保采集器正常运行
  • 告警误报:调整告警阈值,避免频繁误报
  • 脚本执行失败:检查脚本权限,确保脚本可执行,检查脚本语法
  • 配置文件错误:使用配置管理工具,确保配置的一致性和正确性

5.2 最佳实践分享

风哥提示:在自动化运维过程中,应注重脚本的可维护性和可扩展性,确保自动化运维的可持续性。

最佳实践分享:

  • 标准化配置:使用配置管理工具,确保配置的一致性
  • 模块化设计:将自动化脚本模块化,提高可维护性
  • 版本控制:使用版本控制系统管理脚本和配置
  • 测试验证:在测试环境中验证自动化脚本,确保其正确性
  • 监控告警:建立完善的监控告警机制,及时发现和处理问题
  • 文档化:编写详细的文档,便于维护和培训

5.3 自动化运维建议

自动化运维建议:

  • 循序渐进:从简单的自动化任务开始,逐步扩展到复杂的运维流程
  • 团队协作:组织专业团队,共同推进自动化运维
  • 持续改进:根据运维需求的变化,持续改进自动化脚本和流程
  • 安全考虑:确保自动化运维的安全性,如权限控制、加密等
  • 培训学习:加强团队培训,提高自动化运维技能
  • 工具选型:选择适合的自动化工具,如Ansible、Prometheus等
  • 更多视频教程www.fgedu.net.cn

通过本教程的学习,您已经掌握了大数据集群自动化运维的方法和实战技巧。在实际生产环境中,应根据集群规模和业务需求,制定合理的自动化运维计划,选择适合的自动化工具,编写自动化脚本,实现运维任务的自动化,提高运维效率和集群稳定性。学习交流加群风哥QQ113257174

更多学习教程公众号风哥教程itpux_com

from bigdata视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息