上一篇
hadoop云计算实验报告
- 行业动态
- 2025-05-10
- 6
完成Hadoop集群搭建,实现数据存储与处理,分析实验结果,掌握分布式计算原理及实践技能
实验目的
本次实验旨在通过搭建Hadoop集群环境,完成基础的分布式计算任务,深入理解Hadoop生态系统的核心组件(HDFS、MapReduce)及云计算中的分布式存储与计算原理,具体目标包括:
- 掌握Hadoop集群的部署与配置方法。
- 熟悉HDFS分布式文件系统的操作与特性。
- 实现基于MapReduce的数据处理任务(如WordCount)。
- 分析分布式计算的性能优势与局限性。
实验环境
类别 | 配置说明 |
---|---|
硬件 | 3台虚拟机(1主节点+2从节点) |
CPU | Intel i5-8代(每台2核) |
内存 | 每台4GB |
软件 | CentOS 7.6 + Hadoop 3.2.1 |
网络 | 内网IP段192.168.1.0/24 |
实验步骤
环境准备
- 安装JDK:Hadoop依赖Java环境,需在每台节点安装JDK 1.8+,并配置
JAVA_HOME
环境变量。 - 主机名配置:设置主节点(master)、从节点1(slave1)、从节点2(slave2),修改
/etc/hosts
文件实现域名解析。 - SSH免密登录:通过
ssh-keygen
生成密钥对,将公钥分发到所有从节点,实现主节点对从节点的无密码操作。
Hadoop集群部署
- 解压Hadoop:将Hadoop安装包上传至
/opt
目录,解压后修改hadoop-env.sh
,指定JAVA_HOME
。 - 配置核心文件:
core-site.xml
:设置HDFS的NameNode地址(fs.defaultFS=hdfs://master:9000
)。hdfs-site.xml
:配置副本因子(dfs.replication=2
)和NameNode存储路径。mapred-site.xml
:指定MapReduce框架(mapreduce.framework.name=yarn
)。yarn-site.xml
:配置ResourceManager地址(yarn.resourcemanager.hostname=master
)。
- 格式化HDFS:执行
hdfs namenode -format
初始化NameNode元数据。 - 启动集群:依次启动
start-dfs.sh
和start-yarn.sh
,通过jps
命令检查进程(NameNode、DataNode、ResourceManager、NodeManager)。
HDFS操作验证
- 上传文件:将本地文件
test.txt
上传至HDFS:hadoop fs -mkdir /input hadoop fs -put test.txt /input/
- 查看文件:使用
hadoop fs -ls /input
验证文件存储,并通过hadoop fs -cat /input/test.txt
。
MapReduce任务执行
- 编写WordCount程序:使用Java编写MapReduce代码,统计文本中单词频率。
- 编译与打包:通过
javac
编译代码,jar
命令打包为wordcount.jar
。 - 提交任务:执行以下命令启动作业:
hadoop jar wordcount.jar WordCount /input/test.txt /output/result
- 查看结果:任务完成后,使用
hadoop fs -cat /output/result/part-r-00000
查看输出。
实验结果与分析
HDFS存储验证
文件路径 | 大小 | 副本数 | 块大小 |
---|---|---|---|
/input/test.txt | 12KB | 2 | 128MB |
MapReduce任务性能
任务类型 | 输入数据量 | 执行时间(秒) | 加速比 |
---|---|---|---|
本地单机 | 12KB | 5 | |
Hadoop集群 | 12KB | 2 | 42 |
分析:由于数据量较小,集群通信开销导致加速比未达理想值;若增大数据量(如GB级),分布式计算优势将更明显。
问题与解决
- 问题1:DataNode无法连接NameNode。
原因:hdfs-site.xml
中dfs.namenode.rpc-address
配置错误。
解决:修正为master:9000
并重启集群。 - 问题2:Map任务失败。
原因:输入文件未上传至HDFS或路径错误。
解决:使用hadoop fs -ls
确认文件存在。
- HDFS特性:通过块存储、副本机制实现高容错,适合海量数据存储。
- MapReduce原理:任务拆分为Map和Reduce阶段,依赖YARN调度资源。
- 云计算启示:分布式系统需平衡计算效率与网络开销,小规模任务可能不适用。
- 改进方向:未来可尝试Spark替代MapReduce,或增加节点测试横向扩展能力。
FAQs
Q1:Hadoop集群启动后,Web界面无法访问(如http://master:9870)?
A:检查防火墙是否关闭,并确认hdfs-site.xml
中dfs.namenode.http-address
配置正确(默认端口9870)。
Q2:如何调整MapReduce任务的并行度?
A:通过mapred-site.xml
修改mapreduce.job.reduces
(Reduce任务数)或mapreduce.task.io.sort.mb
(内存缓冲区大小)