hadoop之mapreduce、yarn

163 阅读4分钟

一、MapReduce概述

分而治之的思想,适用于大量复杂的任务处理场景。

map负责分:把复杂的任务分为若干个“简单任务”,任务之间没有依赖关系,可以并行运行; reduce负责合并:

mapReduce运行在yarn集群,是一个分布式运算程序的编程框架

8458f3be05f6077d594caf3de8e8cf9.png

二、MapReduce的编程规范,八个步骤:

2ddab4d258a09ab25b413653febdb76.png 709c21996a4766b4db0e79887741403.png

map阶段2个步骤:

  1. 设置InputFormat类,将数据切分为key-value(k1,v1)对,输入到第2步;
  2. 自定义Map逻辑,将第1步的结果转换成另外的key-value(k2,v2)对。 (MapTask来处理)

备注:
自定义的Map逻辑:需要继承Mapper类,重写map()方法;

shuffle阶段4个步骤:

  1. 对第2步输出的key-value进行分区
  2. 对不同分区的数据按照key排序
  3. (可选)规约,减少网络传输数据;
  4. 分组,相同key的value放入一个集合。

reduce阶段2个步骤:

  1. 对多个Map任务的结果进行排序以合并,自定义Reduce类,实现自己的逻辑,对key-value处理转为新的key-value(k3,v3); (ReduceTask处理)
  2. 设置OutputFormat处理并保存Reduce输出的key-value数据。

备注:
自定义的Reduce类:需要继承Reduce类,重写reduce()方法;

总结,需要我们自己做的具体操作:
1、实现MyMap类,重写map();
2、实现MyReduce类,重写reduce();
3、实现主类JobMain,把8个步骤串起来,提交给MapReduce执行。

三、MapReduce的运行模式

集群运行模式
本地运行模式
hadoop jar hadoop_hdfs_xxx.jar xxx.JobMain

四、MapReduce分区

通过我们指定分区,会将同一个分区的数据发送给同一个Reduce当中,即有共性的数据送到一起去处理。

自定义Partitioner(继承Partitioner类,重写getPartition()方法);

默认使用的分区方法是HashPartitioner,它也继承了Partitioner类,使用hash的方式,默认分区只有一个。

39fdf7b1aba7a673a9186673971da54.png

五、MapReduce的排序和序列化

需求可能需要排序处理数据

自定义类(继承writableComparable接口,实现排序方法compareTo()、序列化方法write()、反序列化方法readFields())

六、MapReduce的规约combiner

每个map(MapTask)可能产生大量本地输出,combiner的作用是对map端的输出先做一次合并,以减少在map和reduce节点之间的网络数据传输量

1、combiner是MR程序中的一种组件;
2、combiner组件的父类就是Reducer;
3、combiner和reducer的区别在于运行位置;(在不同的节点上) 4、combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。

自定义一个Combiner类(继承Reduce类,重写reduce()方法)

七、MapReduce的运行机制

b676c567200f4a7dd1815b97edf2227.png

20a6d78dfe248177698ab41fe3a679f.png

八、yarn概述

yarn是hadoop集群中的资源管理系统模块 可为各类计算框架提供资源的管理和调度

总结一句话就是说,yarn主要就是为了调度资源管理任务等。

调度管理:1、计算资源管理(内存、cpu、网络IO、磁盘);2、任务内部的计算模型管理(AppMaster的任务精细化管理)。

九、yarn的主要组件

1、ResourceManager(RM):

  • 负责处理客户端请求;
  • 对各NM上的资源进行统一管理和调度;
  • 给ApplicationMaster分配空闲的Container运行并监控其运行状态。

主要的两个组件:

  1. Scheduler调度器:根据容量、队列等限制条件,负责资源分配,分配单位是container
  2. Applications Manager应用程序管理器:负责整个系统中所有应用程序的管理

2、NodeManager(NM):

  1. 定时向RM汇报本届点上的资源使用情况、各container的运行状态;
  2. 接收并处理来自AM的container启动/停止等请求

3、ApplicationMaster(AM):

负责向RM协调资源,并与NM协同工作完成Task的执行和监控

  1. 用户提交一个任务,就会启动一个AM;
  2. 负责应用的监控,跟踪应用执行状态,重启失败任务等

4、Container:

十、yarn的架构和工作流程

主从架构

ff3f64707782db435803b4101df8860.png

十一、yarn的调度器

  1. FIFO Scheduler(队列调度器)
  2. Capacity Scheduler(容量调度器)
  3. Fair Scheduler(公平调度器)

学习视频1-大数据导论_哔哩哔哩_bilibili