代码改变世界

分布式并行计算MapReduce

2019-06-04 11:05  CMis180kg  阅读(294)  评论(0编辑  收藏  举报

作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319

1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作过程

1)HDFS的功能、工作原理和工作过程

功能:分布式文件系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

工作原理:文件系统都有最小的处理单元,而HDFS的处理单元是一个块。HDFS保存的文件被分成块进行存储。默认块大小为64MB。HDFS有两种类型的节点:NameNode和DataNode。NameNode是管理节点,存放文件元数据。也就是存放着文件和数据块的映射表,数据块和数据节点的映射表。通过NameNode可以找到文件存放的地方,找到存放的数据。DataNode是工作节点,用来存放数据块,也就是文件实际存储的地方。

工作过程:首先工作过程可以分为分为写操作和读操作两步。当客户端向NameNode发送消息以读取元数据时,NameNode将查询其块映射以找到相应的数据节点。然后客户端可以在相应的数据节点中找到数据块,并将它们拼接成文件。这是读写的过程。

2)MapReduce的功能、工作原理和工作过程

功能:并行处理框架,实现任务分解和调度。

工作原理:用户定义一个map函数来处理一个Key-Value对以生成一批中间的Key-Value对,再定义一个reduce函数将所有这些中间的有相同Key的Value合并起来,MapReduce模型主要有Mapper和Reducer,Mapper端主要负责对数据的分析处理,最终转化为Key-Value的数据结构;Reducer端主要是获取Mapper出来的结果,对结果进行统计。

工作过程:将分析的文件切割成多个数据块,将其分配给各个节点处理,每个节点又把数据块分给多个map处理,接着多个map将结果发送给shuffle处理,shuffle再将其交给reduce,最终将其写入到分布式系统文件。

2.HDFS上运行MapReduce

1)准备文本文件,放在本地/home/hadoop/wc

2)编写map函数和reduce函数,在本地运行测试通过

3)启动Hadoop:HDFS, JobTracker, TaskTracker

4)把文本文件上传到hdfs文件系统上 user/hadoop/input 

 5)streaming的jar文件的路径写入环境变量,让环境变量生效

6)建立一个shell脚本文件:streaming接口运行的脚本,名称为run.sh

 

7)source run.sh来执行mapreduce

8)查看运行结果

以上为该次分布式并行计算Map Reduce的所有内容。