Hadoop 2.7.1 伪分布式部署实战:单机模拟集群的完整指南
1. 伪分布式模式的核心价值
伪分布式模式是Hadoop学习者的黄金起点。与完全分布式相比,它在单台机器上模拟了多节点集群的所有关键组件,包括:
- NameNode:HDFS的元数据管理者
- DataNode:实际存储数据块的节点
- ResourceManager:YARN资源调度核心
- NodeManager:单个节点的资源执行者
这种模式的最大优势在于:
- 资源友好:仅需一台配置适中的Linux服务器(建议4核CPU/8GB内存)
- 学习曲线平滑:避免了多机器网络配置的复杂性
- 完整功能验证:可测试HDFS读写、YARN任务调度等核心机制
提示:生产环境请使用完全分布式部署,伪分布式仅适用于开发测试
2. 环境准备关键步骤
2.1 系统基础配置
# 设置主机名(需root权限) hostnamectl set-hostname hadoop-pseudo exec bash # 检查SSH服务状态 systemctl status sshd # 关闭防火墙(学习环境建议操作) systemctl stop firewalld systemctl disable firewalld # 创建专用用户 useradd hadoop echo "hadoop123" | passwd --stdin hadoop2.2 JDK 1.8安装
# 解压JDK到指定目录 tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/ # 设置环境变量(/etc/profile末尾追加) export JAVA_HOME=/usr/local/jdk1.8.0_221 export PATH=$PATH:$JAVA_HOME/bin # 立即生效并验证 source /etc/profile java -version3. Hadoop核心配置详解
3.1 关键配置文件修改
core-site.xml- 全局基础配置:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> </configuration>hdfs-site.xml- HDFS专属配置:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/dfs/data</value> </property> </configuration>yarn-site.xml- YARN资源配置:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> </configuration>3.2 目录权限设置
# 创建必要目录 mkdir -p /opt/hadoop/{tmp,dfs/{name,data}} # 权限变更 chown -R hadoop:hadoop /opt/hadoop chmod -R 755 /opt/hadoop4. 集群启动与验证
4.1 初始化HDFS
# 切换hadoop用户 su - hadoop # 格式化NameNode(首次执行) hdfs namenode -format # 启动HDFS服务 start-dfs.sh4.2 启动YARN服务
start-yarn.sh # 验证进程 jps预期输出应包含:
- NameNode
- DataNode
- ResourceManager
- NodeManager
- SecondaryNameNode
4.3 Web UI访问
| 服务 | 访问地址 | 默认端口 |
|---|---|---|
| HDFS状态 | http://localhost:50070 | 50070 |
| YARN管理 | http://localhost:8088 | 8088 |
5. WordCount实战测试
5.1 准备测试数据
# 创建本地输入文件 echo -e "Hello Hadoop\nHello World\nHello Pseudodistributed" > input.txt # 上传到HDFS hdfs dfs -mkdir /input hdfs dfs -put input.txt /input5.2 执行MapReduce作业
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar \ wordcount /input /output5.3 查看结果
# 查看输出目录 hdfs dfs -ls /output # 显示统计结果 hdfs dfs -cat /output/part-r-00000预期输出示例:
Hadoop 1 Hello 3 Pseudodistributed 1 World 16. 常见问题排查指南
6.1 端口冲突处理
若遇到端口占用问题,可通过以下命令检查:
netstat -tulnp | grep <端口号>6.2 关键日志位置
| 组件 | 日志路径 |
|---|---|
| NameNode | $HADOOP_HOME/logs/hadoop--namenode-.log |
| DataNode | $HADOOP_HOME/logs/hadoop--datanode-.log |
| YARN | $HADOOP_HOME/logs/yarn--resourcemanager-.log |
6.3 安全停止集群
stop-yarn.sh stop-dfs.sh