当前位置:首页 > 行业动态 > 正文

hadoop云计算实验报告

完成Hadoop集群搭建,实现数据存储与处理,分析实验结果,掌握分布式计算原理及实践技能

实验目的

本次实验旨在通过搭建Hadoop集群环境,完成基础的分布式计算任务,深入理解Hadoop生态系统的核心组件(HDFS、MapReduce)及云计算中的分布式存储与计算原理,具体目标包括:

  1. 掌握Hadoop集群的部署与配置方法。
  2. 熟悉HDFS分布式文件系统的操作与特性。
  3. 实现基于MapReduce的数据处理任务(如WordCount)。
  4. 分析分布式计算的性能优势与局限性。

实验环境

类别 配置说明
硬件 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.shstart-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.xmldfs.namenode.rpc-address配置错误。
    解决:修正为master:9000并重启集群。
  • 问题2:Map任务失败。
    原因:输入文件未上传至HDFS或路径错误。
    解决:使用hadoop fs -ls确认文件存在。

  1. HDFS特性:通过块存储、副本机制实现高容错,适合海量数据存储。
  2. MapReduce原理:任务拆分为Map和Reduce阶段,依赖YARN调度资源。
  3. 云计算启示:分布式系统需平衡计算效率与网络开销,小规模任务可能不适用。
  4. 改进方向:未来可尝试Spark替代MapReduce,或增加节点测试横向扩展能力。

FAQs

Q1:Hadoop集群启动后,Web界面无法访问(如http://master:9870)?

A:检查防火墙是否关闭,并确认hdfs-site.xmldfs.namenode.http-address配置正确(默认端口9870)。

Q2:如何调整MapReduce任务的并行度?

A:通过mapred-site.xml修改mapreduce.job.reduces(Reduce任务数)或mapreduce.task.io.sort.mb(内存缓冲区大小)

0