2.MR基础_工作原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15014327/article/details/83033408

一.MapReduce运行机制

  • Client:提交MapReduce作业
  • ResourceManager:负责集群资源的统一管理和调度
  • NodeManager:它主要负责自己本身节点的资源管理和使用,以及定时向RM汇报本节点的资源使用情况
  • ApplicationMaster:主要负责应用程序的管理
  • HDFS:在其他角色间共享数据文件

二.MapReduce框架

MapReduce作业通常将输入数据集拆分为独立的块,这些块由map任务并行处理。框架对map的输出进行排序,然后输入到reduce任务。通常,作业的输入和输出都存储在文件系统中。该框架负责调度任务,监视它们并重新执行失败的任务。通常,计算节点和存储节点是相同的,即MapReduce框架和Hadoop分布式文件系统在同一组节点上运行。此配置允许框架有效地在已存在数据的节点上调度任务,从而在集群中产生非常高的聚合带宽。

1.MapReduce输入输出

MapReduce框架将输入作为一组<key,value>并生成一组<key,value>作为输出。key和value可以是不同的数据类型。该key和value的类必须由框架序列化,因此需要实现Writable接口。此外,key类必须实现WritableComparable接口以便于按框架进行排序。MapReduce作业的输入和输出类型:

input <k1​​,v1> --> map --> <k2,v2> --> combine --> <k2,v2> --> reduce --> <k3,v3> output

2.MapReduce的处理流程

以WordCount为例:

  • MapReduce Job先将数据集进行切片,之后每个片分发给一个Mapper Task执行。
  • 在Mapper Task执行过程中,根据Partition规则进行分区,然后在分区内排序。
  • 之后,将多个Mapper Task中相同Partition的数据Copy到同一个Reducer所在的节点上,进行合并和排序。
  • 最后,在Reducer Task中统计出单词的词频,并输出到输出文件中。

猜你喜欢

转载自blog.csdn.net/qq_15014327/article/details/83033408