Apache Hadoop伪分布式模式
外观
Hadoop伪分布式模式(Pseudo-Distributed Mode)是Hadoop的一种运行模式,它在单个节点上模拟分布式环境,所有Hadoop守护进程(如NameNode、DataNode、ResourceManager、NodeManager等)均以独立Java进程的形式运行。这种模式适合开发、测试和学习,能够完整体验Hadoop分布式功能,而无需多台物理机器。
概述[编辑 | 编辑源代码]
伪分布式模式是介于本地模式和完全分布式模式之间的配置。与本地模式不同,伪分布式模式会启动所有Hadoop服务,并利用HDFS(Hadoop Distributed File System)存储数据,但所有服务均运行在单个节点上。其核心特点包括:
- 使用HDFS(而非本地文件系统)
- 启动所有关键守护进程
- 通过SSH连接到本地主机(需配置免密登录)
配置步骤[编辑 | 编辑源代码]
以下是在Linux系统上配置Hadoop伪分布式模式的详细步骤:
1. 环境准备[编辑 | 编辑源代码]
确保已安装:
- Java(JDK 8或11)
- Hadoop(建议3.x版本)
- SSH服务
# 检查Java版本
java -version
# 安装SSH(Ubuntu示例)
sudo apt-get install openssh-server
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
2. 修改Hadoop配置文件[编辑 | 编辑源代码]
需编辑以下文件(路径为$HADOOP_HOME/etc/hadoop/
):
文件名 | 关键配置项 | 说明 |
---|---|---|
core-site.xml |
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
|
定义默认文件系统URI |
hdfs-site.xml |
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
|
设置HDFS副本数为1(单节点) |
mapred-site.xml |
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
|
指定使用YARN框架 |
yarn-site.xml |
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
|
配置NodeManager辅助服务 |
3. 格式化HDFS[编辑 | 编辑源代码]
首次启动前需格式化NameNode:
hdfs namenode -format
4. 启动Hadoop服务[编辑 | 编辑源代码]
使用内置脚本启动服务:
# 启动HDFS
$HADOOP_HOME/sbin/start-dfs.sh
# 启动YARN
$HADOOP_HOME/sbin/start-yarn.sh
5. 验证运行状态[编辑 | 编辑源代码]
检查进程是否正常运行:
jps
预期输出应包含:
NameNode DataNode ResourceManager NodeManager SecondaryNameNode
架构示意图[编辑 | 编辑源代码]
实际应用示例[编辑 | 编辑源代码]
运行WordCount程序[编辑 | 编辑源代码]
1. 在HDFS创建输入目录并上传文件:
hdfs dfs -mkdir -p /user/hadoop/input
hdfs dfs -put $HADOOP_HOME/LICENSE.txt /user/hadoop/input
2. 执行MapReduce作业:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \
wordcount /user/hadoop/input /user/hadoop/output
3. 查看结果:
hdfs dfs -cat /user/hadoop/output/part-r-00000 | head -n 5
示例输出:
"AS 4 "BSD" 1 "COPYRIGHT" 1 "Contributors" 1 "Derivative 1
性能调优建议[编辑 | 编辑源代码]
虽然伪分布式模式主要用于开发测试,但仍可优化:
- 调整JVM堆内存(修改
hadoop-env.sh
) - 合理设置YARN资源(
yarn-site.xml
中的yarn.nodemanager.resource.memory-mb
) - 启用HDFS压缩(配置
io.compression.codecs
)
常见问题解决[编辑 | 编辑源代码]
问题 | 解决方案 |
---|---|
SSH连接失败 | 确保ssh localhost 无需密码
|
端口冲突 | 检查9000(HDFS)、8088(YARN UI)等端口 |
权限错误 | 使用hdfs dfs -chmod 修改权限
|
数学原理[编辑 | 编辑源代码]
在伪分布式模式下,HDFS的存储容量计算为: 其中:
- :实际可用容量
- :各磁盘可用空间(伪分布式模式只有单磁盘)
- :副本因子(伪分布式模式下通常为1)
进阶学习[编辑 | 编辑源代码]
完成伪分布式模式实践后,建议:
伪分布式模式为学习者提供了理解Hadoop核心架构的理想沙箱环境,是迈向生产环境部署的重要阶梯。