1. Hadoop集群搭建概述
作为大数据处理的核心框架,Hadoop集群搭建是每个大数据工程师必须掌握的技能。我在实际工作中搭建过数十个不同规模的Hadoop集群,从3节点的小型测试环境到上千节点的生产集群都有涉及。今天要分享的是最基础的集群搭建方法,适合刚接触Hadoop的开发者入门学习。
Hadoop集群主要由HDFS(分布式文件系统)和YARN(资源管理系统)两大核心组件构成。搭建过程中需要特别注意网络配置、资源分配和组件协调等问题。本次搭建采用最稳定的Hadoop 3.3.x版本,操作系统选择CentOS 7,这是目前企业环境中使用最广泛的组合。
提示:生产环境建议使用奇数个NameNode以实现高可用,但入门学习可以先从单NameNode开始
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与规划
2.1 硬件配置建议
对于学习环境,建议准备至少3台虚拟机:
- 主节点:4核CPU/8GB内存/100GB存储
- 从节点:2核CPU/4GB内存/50GB存储(至少2台)
我通常使用VirtualBox或VMware Workstation创建虚拟机,网络模式选择桥接模式,确保各节点间可以互相通信。
2.2 操作系统配置
在所有节点上执行以下基础配置:
bash复制# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 禁用SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 配置hosts文件
echo "192.168.1.101 hadoop-master" >> /etc/hosts
echo "192.168.1.102 hadoop-slave1" >> /etc/hosts
echo "192.168.1.103 hadoop-slave2" >> /etc/hosts
# 创建hadoop用户
useradd hadoop
passwd hadoop
2.3 JDK安装
Hadoop运行需要Java环境,建议安装OpenJDK 8:
bash复制yum install -y java-1.8.0-openjdk-devel
# 配置环境变量
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile
3. Hadoop安装与配置
3.1 软件包获取与解压
从Apache官网下载Hadoop二进制包:
bash复制wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzf hadoop-3.3.4.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.4 /opt/hadoop
chown -R hadoop:hadoop /opt/hadoop*
3.2 核心配置文件修改
需要配置的主要文件有:
- hadoop-env.sh:环境变量
- core-site.xml:核心参数
- hdfs-site.xml:HDFS配置
- yarn-site.xml:YARN配置
- mapred-site.xml:MapReduce配置
- workers:从节点列表
3.2.1 hadoop-env.sh配置
bash复制echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> /opt/hadoop/etc/hadoop/hadoop-env.sh
echo 'export HADOOP_HOME=/opt/hadoop' >> /opt/hadoop/etc/hadoop/hadoop-env.sh
3.2.2 core-site.xml配置
xml复制<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
3.2.3 hdfs-site.xml配置
xml复制<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
</configuration>
4. 集群启动与验证
4.1 格式化HDFS
在主节点执行:
bash复制su - hadoop
hdfs namenode -format
4.2 启动HDFS
bash复制start-dfs.sh
4.3 启动YARN
bash复制start-yarn.sh
4.4 验证集群状态
检查HDFS:
bash复制hdfs dfsadmin -report
检查YARN:
bash复制yarn node -list
5. 常见问题与解决方案
5.1 节点无法通信
现象:DataNode无法连接NameNode
排查步骤:
- 检查防火墙状态
- 测试节点间ping和telnet
- 验证hosts文件配置
5.2 磁盘空间不足
现象:DataNode启动失败
解决方法:
- 检查dfs.datanode.data.dir目录权限
- 确保挂载点有足够空间
- 清理临时文件
5.3 内存配置问题
现象:NodeManager频繁被杀
调整方案:
修改yarn-site.xml中的内存参数:
xml复制<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
6. 性能优化建议
- 根据数据量调整HDFS块大小(dfs.blocksize)
- 合理配置YARN容器内存(yarn.scheduler.minimum-allocation-mb)
- 启用HDFS短路读(dfs.client.read.shortcircuit)
- 配置适当的副本数(dfs.replication)
我在实际项目中发现,对于机械硬盘环境,将dfs.datanode.handler.count设置为10-15可以获得更好的I/O性能。而对于SSD环境,这个值可以适当降低到5-8以减少CPU开销。
