1. 首页 > Hadoop教程 > 正文

大数据教程FG002-Hadoop集群规划与服务器环境准备

本文档风哥主要介绍Hadoop集群规划与服务器环境准备,包括Hadoop集群规划原则、Hadoop节点角色划分、Hadoop环境要求概述、Hadoop硬件资源规划、Hadoop存储规划、Hadoop网络规划、Hadoop操作系统配置、Hadoop内核参数优化、Hadoop用户与目录配置、Hadoop集群拓扑设计、Hadoop机架感知配置、Hadoop环境初始化脚本等内容,风哥教程参考Hadoop官方文档Cluster Setup、Getting Started等内容,适合大数据运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 Hadoop集群规划原则

Hadoop集群规划需要遵循以下原则:高可用性、可扩展性、高性能、安全性、可维护性。更多视频教程www.fgedu.net.cn

Hadoop集群规划核心原则:

  • 高可用性:关键组件必须配置HA,避免单点故障
  • 可扩展性:支持横向扩展,方便扩容
  • 高性能:合理分配资源,优化性能
  • 安全性:配置认证授权,保障数据安全
  • 可维护性:便于运维管理和故障排查

1.2 Hadoop节点角色划分

Hadoop集群节点角色划分:

节点类型 部署服务 硬件要求 数量建议
Master节点 NameNode、ResourceManager 高CPU、大内存 2-3台(HA)
Worker节点 DataNode、NodeManager 大磁盘、高IO 3台以上
协调节点 ZooKeeper、JournalNode 中等配置 3台以上
客户端节点 Hive、Spark、Sqoop 中等配置 2-3台

1.3 Hadoop环境要求概述

Hadoop环境要求包括硬件要求、操作系统要求、网络要求、软件要求等:

  • 硬件要求:CPU、内存、磁盘、网络
  • 操作系统要求:Linux系统、内核版本、系统参数
  • 网络要求:网络带宽、网络延迟、网络隔离
  • 软件要求:JDK、SSH、NTP、Python
风哥提示:Hadoop集群规划是生产环境部署的第一步,合理的规划可以避免后期很多问题。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 Hadoop硬件资源规划

Hadoop硬件资源规划需要根据业务规模和性能要求进行合理配置:

# Hadoop硬件资源规划(参考)

## NameNode硬件配置
– CPU:16-32核
– 内存:64GB-256GB(根据文件数量调整)
* 每100万文件约需1GB内存
* 建议预留50%内存给操作系统
– 磁盘:2块1TB-2TB SAS盘(RAID1)
* 存储元数据和编辑日志
* 建议使用SSD提升性能
– 网络:万兆网卡(建议双网卡绑定)

## DataNode硬件配置
– CPU:16-24核
– 内存:64GB-256GB
* 根据数据量和计算任务调整
* 建议预留30%内存给操作系统
– 磁盘:12-24块4TB-8TB SATA盘
* JBOD模式,不使用RAID
* 建议配置热备盘
– 网络:万兆网卡(建议双网卡绑定)

## ResourceManager硬件配置
– CPU:16-32核
– 内存:64GB-128GB
– 磁盘:2块1TB SAS盘(RAID1)
– 网络:万兆网卡

## ZooKeeper硬件配置
– CPU:8-16核
– 内存:16GB-32GB
– 磁盘:2块500GB SAS盘(RAID1)
* 使用SSD提升性能
– 网络:千兆或万兆网卡

2.2 Hadoop存储规划

Hadoop存储规划需要考虑数据量、副本数、增长率等因素:

# Hadoop存储容量计算

## 存储容量计算公式
总存储容量 = 原始数据量 × 副本数 ÷ 压缩比 ÷ 有效容量比

## 参数说明
– 原始数据量:业务数据总量
– 副本数:默认3副本
– 压缩比:根据压缩算法,通常0.3-0.5
– 有效容量比:预留空间,建议0.7-0.8

## 计算示例
原始数据量:100TB
副本数:3
压缩比:0.4
有效容量比:0.75

总存储容量 = 100TB × 3 ÷ 0.4 ÷ 0.75 = 1000TB

## 磁盘配置建议
– 单节点磁盘数量:12-24块
– 单块磁盘容量:4TB-8TB
– 单节点存储容量:48TB-192TB
– 节点数量:根据总存储容量计算

## 示例:1000TB集群
单节点存储:96TB(12块8TB盘)
节点数量:1000TB ÷ 96TB ≈ 11台
建议配置:15台DataNode(考虑冗余和扩展)

2.3 Hadoop网络规划

Hadoop网络规划需要考虑网络拓扑、网络带宽、网络隔离等因素:

# Hadoop网络规划

## 网络拓扑设计
– 核心交换机:万兆或更高带宽
– 接入交换机:万兆带宽
– 服务器网卡:万兆网卡
– 网络拓扑:Spine-Leaf架构

## 网络隔离方案
方案一:单网络方案
– 所有流量共用一个网络
– 优点:简单、成本低
– 缺点:网络拥塞、性能影响

方案二:双网络方案
– 管理网络:集群管理、监控
– 数据网络:数据传输、计算
– 优点:网络隔离、性能好
– 缺点:成本较高

方案三:三网络方案
– 管理网络:集群管理、监控
– 数据网络:数据传输
– 计算网络:Shuffle数据传输
– 优点:性能最优
– 缺点:成本最高

## 网络带宽计算
每节点网络带宽 = 节点磁盘数量 × 单盘吞吐量

示例:
– 12块磁盘,单盘吞吐量150MB/s
– 网络带宽 = 12 × 150MB/s = 1800MB/s ≈ 18Gbps
– 建议配置:万兆网卡(10Gbps)或双万兆绑定(20Gbps)

生产环境建议:Hadoop网络规划建议使用双网络方案,管理网络和数据网络分离,避免网络拥塞影响性能。学习交流加群风哥QQ113257174

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

3.1 Hadoop操作系统配置

3.1.1 操作系统初始化

# 操作系统初始化脚本
#!/bin/bash
# os_init.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 关闭SELinux
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 配置主机名
hostnamectl set-hostname nn1.fgedu.net.cn

# 配置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 EOF # 安装必要软件 yum install -y vim wget curl net-tools lsof telnet ntpdate # 配置时间同步 ntpdate ntp.aliyun.com echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1″ >> /var/spool/cron/root

# 验证配置
echo “操作系统初始化完成”

3.1.2 验证操作系统配置

# 验证SELinux状态
getenforce

Disabled

# 验证防火墙状态
systemctl status firewalld

● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

# 验证主机名
hostname

nn1.fgedu.net.cn

# 验证hosts配置
cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
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

# 验证时间同步
date

Wed Apr 8 10:45:30 CST 2026

3.2 Hadoop内核参数优化

3.2.1 配置内核参数

# 配置内核参数
cat >> /etc/sysctl.conf << 'EOF' # 关闭透明大页 vm.transparent_hugepage_enabled = never vm.transparent_hugepage_defrag = never # 文件描述符 fs.file-max = 6815744 # 进程数 kernel.pid_max = 65536 # 网络参数 net.core.somaxconn = 32768 net.core.netdev_max_backlog = 32768 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_max_tw_buckets = 65535 net.ipv4.ip_local_port_range = 1024 65535 # 内存参数 vm.swappiness = 10 vm.dirty_ratio = 80 vm.dirty_background_ratio = 5 EOF # 使内核参数生效 sysctl -p vm.transparent_hugepage_enabled = never vm.transparent_hugepage_defrag = never fs.file-max = 6815744 kernel.pid_max = 65536 net.core.somaxconn = 32768 net.core.netdev_max_backlog = 32768 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_max_tw_buckets = 65535 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 10 vm.dirty_ratio = 80 vm.dirty_background_ratio = 5

3.2.2 配置文件描述符限制

# 配置文件描述符限制
cat >> /etc/security/limits.conf << 'EOF' * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 hadoop soft nofile 65536 hadoop hard nofile 65536 hadoop soft nproc 65536 hadoop hard nproc 65536 EOF # 验证配置 ulimit -n 65536 ulimit -u 65536

3.3 Hadoop用户与目录配置

3.3.1 创建Hadoop用户

# 创建hadoop用户
useradd hadoop
echo “hadoop” | passwd –stdin hadoop

Changing password for user hadoop.
passwd: all authentication tokens updated successfully.

# 配置sudo权限
echo “hadoop ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers

# 验证用户
id hadoop

uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)

3.3.2 创建Hadoop目录

# 创建Hadoop目录
mkdir -p /bigdata/app
mkdir -p /bigdata/fgdata
mkdir -p /bigdata/logs
mkdir -p /bigdata/tmp

# 设置目录权限
chown -R hadoop:hadoop /bigdata

# 验证目录
ls -ld /bigdata/*

drwxr-xr-x 2 hadoop hadoop 6 Apr 8 10:50 /bigdata/app
drwxr-xr-x 2 hadoop hadoop 6 Apr 8 10:50 /bigdata/fgdata
drwxr-xr-x 2 hadoop hadoop 6 Apr 8 10:50 /bigdata/logs
drwxr-xr-x 2 hadoop hadoop 6 Apr 8 10:50 /bigdata/tmp

风哥提示:Hadoop用户和目录配置是集群部署的基础,必须确保目录权限正确,否则集群启动会失败。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 Hadoop集群拓扑设计

以10节点Hadoop集群为例,介绍集群拓扑设计:

主机名 IP地址 部署服务 角色
nn1.fgedu.net.cn 192.168.1.10 NameNode、ZKFC、JournalNode Master
nn2.fgedu.net.cn 192.168.1.11 NameNode、ZKFC、JournalNode Master
rm1.fgedu.net.cn 192.168.1.15 ResourceManager、JobHistoryServer Master
rm2.fgedu.net.cn 192.168.1.16 ResourceManager Master
dn1.fgedu.net.cn 192.168.1.12 DataNode、NodeManager、JournalNode Worker
dn2.fgedu.net.cn 192.168.1.13 DataNode、NodeManager、ZooKeeper Worker
dn3.fgedu.net.cn 192.168.1.14 DataNode、NodeManager、ZooKeeper Worker
zk1.fgedu.net.cn 192.168.1.17 ZooKeeper 协调
client1.fgedu.net.cn 192.168.1.18 Hive、Spark、Sqoop 客户端
client2.fgedu.net.cn 192.168.1.19 Hive、Spark、Presto 客户端

4.2 Hadoop机架感知配置

Hadoop机架感知配置可以提高数据可靠性和性能:

# 机架感知脚本
cat > /bigdata/app/hadoop/etc/hadoop/rack-topology.sh << 'EOF' #!/bin/bash # rack-topology.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn # 机架映射配置 RACK_MAP=( "192.168.1.10:/rack01" "192.168.1.11:/rack01" "192.168.1.12:/rack01" "192.168.1.13:/rack02" "192.168.1.14:/rack02" "192.168.1.15:/rack01" "192.168.1.16:/rack01" ) # 查找机架信息 for item in "${RACK_MAP[@]}"; do ip=$(echo $item | cut -d: -f1) rack=$(echo $item | cut -d: -f2) if [ "$1" = "$ip" ]; then echo $rack exit 0 fi done # 默认机架 echo "/default-rack" EOF # 设置执行权限 chmod +x /bigdata/app/hadoop/etc/hadoop/rack-topology.sh # 配置core-site.xml cat >> /bigdata/app/hadoop/etc/hadoop/core-site.xml << 'EOF' net.topology.script.file.name
/bigdata/app/hadoop/etc/hadoop/rack-topology.sh
net.topology.script.number.args
100
EOF

4.3 Hadoop环境初始化脚本

Hadoop环境初始化脚本可以批量配置所有节点:

# Hadoop环境初始化脚本
#!/bin/bash
# hadoop_env_init.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 节点列表
NODES=”nn1 nn2 dn1 dn2 dn3″

# 环境初始化函数
init_env() {
local node=$1

echo “开始初始化节点: $node”

# 关闭SELinux
ssh $node “setenforce 0”
ssh $node “sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config”

# 关闭防火墙
ssh $node “systemctl stop firewalld”
ssh $node “systemctl disable firewalld”

# 配置内核参数
ssh $node “sysctl -w vm.swappiness=10”

# 创建用户和目录
ssh $node “useradd hadoop 2>/dev/null || true”
ssh $node “mkdir -p /bigdata/app /bigdata/fgdata /bigdata/logs /bigdata/tmp”
ssh $node “chown -R hadoop:hadoop /bigdata”

echo “节点 $node 初始化完成”
}

# 批量初始化
for node in $NODES; do
init_env $node
done

echo “所有节点初始化完成”

Part05-风哥经验总结与分享

5.1 Hadoop集群规划最佳实践

Hadoop集群规划最佳实践:

  • 高可用架构:NameNode和ResourceManager必须配置HA
  • 机架感知:配置机架感知,提高数据可靠性
  • 资源隔离:使用YARN队列进行资源隔离
  • 网络规划:管理网络和数据网络分离
  • 存储规划:预留足够的存储空间,考虑增长率
  • 监控规划:提前规划监控告警体系

5.2 Hadoop容量计算方法

Hadoop容量计算方法:

# Hadoop容量计算示例

## 存储容量计算
原始数据量:500TB
副本数:3
压缩比:0.4
有效容量比:0.75

总存储容量 = 500TB × 3 ÷ 0.4 ÷ 0.75 = 5000TB

## 节点数量计算
单节点存储:96TB(12块8TB盘)
节点数量:5000TB ÷ 96TB ≈ 53台
建议配置:60台DataNode(考虑冗余和扩展)

## 内存容量计算
NameNode内存:
– 文件数量:1亿
– 每100万文件约需1GB内存
– NameNode内存 = 1亿 ÷ 100万 × 1GB = 100GB
– 建议配置:128GB

DataNode内存:
– 根据计算任务调整
– 建议:64GB-128GB

5.3 Hadoop环境检查清单

Hadoop环境检查清单:

Hadoop环境检查清单:

  • □ 操作系统版本符合要求
  • □ SELinux已关闭
  • □ 防火墙已关闭
  • □ 主机名已配置
  • □ hosts文件已配置
  • □ 时间同步已配置
  • □ JDK已安装
  • □ SSH免密登录已配置
  • □ 内核参数已优化
  • □ 文件描述符已配置
  • □ Hadoop用户已创建
  • □ Hadoop目录已创建
风哥提示:Hadoop环境准备是集群部署的关键步骤,必须确保所有节点环境一致,避免后期出现各种问题。from bigdata视频:www.itpux.com

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

联系我们

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

微信号:itpux-com

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