本文档风哥主要介绍Hadoop生态架构与官方核心组件,包括Hadoop生态系统概述、Hadoop核心组件架构、Hadoop核心特性与优势、Hadoop生产环境硬件要求、Hadoop生产环境操作系统配置、Hadoop生产环境网络规划、Hadoop集群规划案例、Hadoop组件版本选型、Hadoop学习前景与路径等内容,风哥教程参考Hadoop官方文档Getting Started、Core Components等内容,适合大数据开发人员和运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 Hadoop生态系统概述
Hadoop是Apache软件基金会开发的开源分布式计算平台,提供了可靠的、可扩展的、分布式计算框架。Hadoop生态系统由多个核心组件组成,包括HDFS、YARN、MapReduce等,以及丰富的生态工具如Hive、Spark、HBase、Kafka等。更多视频教程www.fgedu.net.cn
- HDFS:分布式文件系统,提供高吞吐量的数据访问
- YARN:资源管理和作业调度框架
- MapReduce:分布式计算框架
- Hive:数据仓库工具,提供SQL查询接口
- Spark:快速通用的计算引擎
- HBase:分布式列式存储数据库
- Kafka:分布式消息队列
- ZooKeeper:分布式协调服务
1.2 Hadoop核心组件架构
Hadoop核心组件架构采用Master/Slave架构设计,主要包括以下核心组件:
| 组件 | Master节点 | Slave节点 | 功能说明 |
|---|---|---|---|
| HDFS | NameNode | DataNode | 分布式文件存储 |
| YARN | ResourceManager | NodeManager | 资源管理与调度 |
| MapReduce | JobHistoryServer | Task | 分布式计算 |
1.3 Hadoop核心特性与优势
Hadoop核心特性与优势:
- 高可靠性:数据多副本存储,自动故障转移
- 高扩展性:支持横向扩展,可扩展至数千节点
- 高效性:分布式并行计算,提高处理效率
- 高容错性:自动检测和恢复故障节点
- 低成本:运行在廉价硬件上,降低成本
- 开源免费:Apache开源项目,社区活跃
Part02-生产环境规划与建议
2.1 Hadoop生产环境硬件要求
Hadoop生产环境硬件要求根据集群规模和业务需求进行规划:
## NameNode硬件要求
– CPU:16核以上
– 内存:64GB-128GB(根据文件数量调整)
– 磁盘:2块1TB SAS盘(RAID1,元数据存储)
– 网络:万兆网卡
## DataNode硬件要求
– CPU:16核以上
– 内存:64GB-128GB
– 磁盘:12块以上4TB-8TB SATA盘(JBOD)
– 网络:万兆网卡
## ResourceManager硬件要求
– CPU:16核以上
– 内存:64GB-128GB
– 磁盘:2块1TB SAS盘(RAID1)
– 网络:万兆网卡
## 最小集群规模
– NameNode:2台(HA架构)
– DataNode:3台以上
– ResourceManager:2台(HA架构)
– ZooKeeper:3台
2.2 Hadoop生产环境操作系统配置
Hadoop生产环境操作系统配置要求:
## 操作系统版本
– Oracle Linux 9.3 / RHEL 9.3 / 8.x / 7.x
– CentOS 7.x / 8.x
– 国产麒麟操作系统 Kylin v10 SP3
– 欧拉操作系统 openEuler
## 内核参数配置
# 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 关闭NUMA
# 在GRUB配置中添加:numa=off
# 文件描述符限制
echo “* soft nofile 65536” >> /etc/security/limits.conf
echo “* hard nofile 65536” >> /etc/security/limits.conf
# 进程数限制
echo “* soft nproc 65536” >> /etc/security/limits.conf
echo “* hard nproc 65536” >> /etc/security/limits.conf
## 禁用SELinux
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
## 禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
2.3 Hadoop生产环境网络规划
Hadoop生产环境网络规划建议:
## 网络拓扑
– 管理网络:用于集群管理和监控
– 数据网络:用于数据传输和计算
– 存储网络:用于存储数据访问(可选)
## 主机名规划
nn1.fgedu.net.cn # NameNode主节点
nn2.fgedu.net.cn # NameNode备节点
dn1.fgedu.net.cn # DataNode节点1
dn2.fgedu.net.cn # DataNode节点2
dn3.fgedu.net.cn # DataNode节点3
rm1.fgedu.net.cn # ResourceManager主节点
rm2.fgedu.net.cn # ResourceManager备节点
zk1.fgedu.net.cn # ZooKeeper节点1
zk2.fgedu.net.cn # ZooKeeper节点2
zk3.fgedu.net.cn # ZooKeeper节点3
## IP地址规划
192.168.1.10 nn1.fgedu.net.cn
192.168.1.11 nn2.fgedu.net.cn
192.168.1.12 dn1.fgedu.net.cn
192.168.1.13 dn2.fgedu.net.cn
192.168.1.14 dn3.fgedu.net.cn
192.168.1.15 rm1.fgedu.net.cn
192.168.1.16 rm2.fgedu.net.cn
192.168.1.17 zk1.fgedu.net.cn
192.168.1.18 zk2.fgedu.net.cn
192.168.1.19 zk3.fgedu.net.cn
## /etc/hosts配置
cat >> /etc/hosts << EOF
192.168.1.10 nn1.fgedu.net.cn nn1
192.168.1.11 nn2.fgedu.net.cn nn2
192.168.1.12 dn1.fgedu.net.cn dn1
192.168.1.13 dn2.fgedu.net.cn dn2
192.168.1.14 dn3.fgedu.net.cn dn3
192.168.1.15 rm1.fgedu.net.cn rm1
192.168.1.16 rm2.fgedu.net.cn rm2
192.168.1.17 zk1.fgedu.net.cn zk1
192.168.1.18 zk2.fgedu.net.cn zk2
192.168.1.19 zk3.fgedu.net.cn zk3
EOF
Part03-生产环境项目实施方案
3.1 Hadoop生产环境检查
3.1.1 检查操作系统版本
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# 检查内核版本
uname -r
3.10.0-1160.el7.x86_64
# 检查系统架构
uname -m
x86_64
3.1.2 检查系统资源
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
Stepping: 4
CPU MHz: 2500.000
BogoMIPS: 5000.00
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 25344K
NUMA node0 CPU(s): 0-15
# 检查内存信息
free -h
total used free shared buff/cache available
Mem: 62G 1.2G 58G 156M 2.8G 60G
Swap: 7.9G 0B 7.9G
# 检查磁盘信息
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 2.0G 48G 4% /
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 12M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 1014M 150M 865M 15% /boot
/dev/sdb1 2.0T 33M 2.0T 1% /bigdata
3.2 Hadoop JDK环境安装
3.2.1 安装JDK
mkdir -p /bigdata/app
# 解压JDK安装包
tar -zxvf jdk-8u281-linux-x64.tar.gz -C /bigdata/app/
# 配置环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/bigdata/app/jdk1.8.0_281
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
# 使环境变量生效
source /etc/profile
# 验证JDK安装
java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
# 验证JAVA_HOME
echo $JAVA_HOME
/bigdata/app/jdk1.8.0_281
3.3 Hadoop SSH免密登录配置
3.3.1 配置SSH免密登录
useradd hadoop
echo “hadoop” | passwd –stdin hadoop
# 切换到hadoop用户
su – hadoop
# 生成SSH密钥
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory ‘/home/hadoop/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:abc123def456ghi789jkl012mno345pqr678stu901vwx hadoop@nn1.fgedu.net.cn
The key’s randomart image is:
+—[RSA 2048]—-+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+—-[SHA256]—–+
# 复制公钥到所有节点
ssh-copy-id hadoop@nn1
ssh-copy-id hadoop@nn2
ssh-copy-id hadoop@dn1
ssh-copy-id hadoop@dn2
ssh-copy-id hadoop@dn3
# 测试SSH免密登录
ssh nn2 date
Wed Apr 8 10:30:45 CST 2026
ssh dn1 date
Wed Apr 8 10:30:47 CST 2026
Part04-生产案例与实战讲解
4.1 Hadoop集群规划案例
以50节点Hadoop集群为例,介绍集群规划方案:
| 节点角色 | 节点数量 | 硬件配置 | 部署服务 |
|---|---|---|---|
| NameNode | 2 | 16核/128GB/2TB | NameNode、ZKFC、JournalNode |
| ResourceManager | 2 | 16核/128GB/2TB | ResourceManager、JobHistoryServer |
| DataNode | 45 | 16核/128GB/48TB | DataNode、NodeManager |
| ZooKeeper | 3 | 8核/32GB/1TB | ZooKeeper |
| 客户端 | 2 | 8核/32GB/1TB | Hive、Spark、Sqoop等 |
4.2 Hadoop组件版本选型
Hadoop组件版本选型建议:
## 核心组件版本
Hadoop:3.3.5
JDK:1.8.0_281
ZooKeeper:3.8.1
## 存储组件版本
HBase:2.5.3
Hive:3.1.3
## 计算组件版本
Spark:3.4.1
Flink:1.17.0
Presto:0.280
## 消息队列版本
Kafka:3.5.0
## 数据采集版本
Sqoop:1.4.7
Flume:1.11.0
## 调度组件版本
Oozie:5.3.0
Azkaban:3.90.0
## 监控组件版本
Prometheus:2.45.0
Grafana:10.0.0
## 安全组件版本
Kerberos:1.19
Ranger:2.4.0
4.3 Hadoop学习前景与路径
Hadoop学习前景与路径规划:
- 第一阶段:Linux基础、Java基础、Hadoop基础
- 第二阶段:HDFS、YARN、MapReduce核心组件
- 第三阶段:Hive、Spark、HBase生态组件
- 第四阶段:Kafka、Flume、Sqoop数据采集
- 第五阶段:数仓建设、实时计算、数据治理
- 第六阶段:性能优化、故障处理、项目实战
Part05-风哥经验总结与分享
5.1 Hadoop生产环境最佳实践
Hadoop生产环境最佳实践:
- 高可用架构:NameNode和ResourceManager必须配置HA
- 资源隔离:使用YARN队列进行资源隔离
- 数据安全:配置Kerberos认证和Ranger权限
- 监控告警:建立完善的监控告警体系
- 定期备份:定期备份元数据和关键数据
- 容量规划:提前规划存储和计算资源
5.2 Hadoop常见问题与解决方案
Hadoop常见问题与解决方案:
- NameNode内存不足:调整heap size,优化元数据管理
- DataNode磁盘满:清理临时文件,扩容磁盘
- YARN资源不足:调整队列配置,优化资源分配
- 小文件过多:使用HAR归档,定期合并小文件
- 数据倾斜:优化分区策略,使用Combiner
5.3 Hadoop生态工具推荐
Hadoop生态工具推荐:
- 集群管理:Ambari、Cloudera Manager
- 监控告警:Prometheus+Grafana、Ganglia
- 日志分析:ELK Stack(Elasticsearch+Logstash+Kibana)
- 数据治理:Atlas、Ranger
- 数据质量:Deequ、Great Expectations
- 调度工具:Airflow、DolphinScheduler
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
