Mapreduce运行原理以及2

Mapreduce运行原理以及2.-x基于yarn的工作原理

  1. mapreduce1.x的架构图

​ Job Tracker:

​ jobtracker是负责整个资源管理和资源调度

​ Task Tracker:

​ tasktracker是负责真正执行任务的节点

​ stp1: 当clients需要执行mapreduce计算时,clients首先向jobtracker申请一个jobid,客户端首先会根据自己

​ 要计算block块列出所有的split列表、拷贝jar文件、配置信息到hdfs上。

​ stp2:jobtracker收到请求后将其放到作业队列中,等待作业调度器调度,作业调度器会根据split列表信息以

​ 及自己的调度算法为每一个split创建一个map任务,并为每一个map任务分配一个tasktracker节点执行

​ 此处分配tasktracker时会优先**根据含有map任务需要执行的数据的tasktracker上,**同时将jar包计算

​ 程序,并且选择相对cpu不忙的tasktracker,复制到改tasktracker上,此处体现了mapreduce的

算向数据的移动核心思想

​ stp3:tasktracker根据和jobtracker的心跳机制告知jobtracker自身的资源情况,同时在心跳时,jobtracker

​ 会告诉tasktracker需要其执行的map任务以及reduce任务。

​ stp4:tasktracker根据心跳机制,每过一段时间便会告知jobtracker自身执行的状态和进度,当一个任务执行

​ 成功时会把当前作业执行状态设置为成功,当jobtracker查询时会向用户返回一条消息。(这条消息

​ 就是我们平时可以看到的执行map=??% reduce=??%)

1.x的不足之处:jobtracker单点故障

​ jobtracker内存压力过大

​ 只有当map执行完过后reduce才能执行,造成资源的浪费

2.mapreduce2.x的架构图

ResourceManger:资源管理,主节点

NodeManager:管理container的生命周期,与RM进行心跳机制

ApplicationMaster:负责向RM申请资源:同时向NodeManager请求启动contanier,告知container执行任务

Container:资源的列表信息(节点,cpu,io)默认1G,在没有人为设置的情况下当超出1G后nodemanger会直

​ 接kill掉contaniner

​ stp1:.当clients需要执行mapreduce计算时,clients首先向ResourceManger申请一个jobid,客户端首先会

​ 根据自己要计算block块列出所有的split列表、拷贝jar文件、配置信息到hdfs上。

​ stp2:RM为改作业分配第一个Container,与NodeManger通信申请一个Container既是ApplicationMaster

​ stp3:AppM向RM注册自己的信息。

​ stp4:APPM得到向RM申请一个Container,得到资源后,AppM向NodeManger申请开启任务,当

​ NodeManger设置好运行环境,既jar,环境变量等,

​ stp5:这些任务可以通过RPC协议向AppM报告执行过程,状态,当执行错误时,AppM会重启该任务

​ 执行完这些任务后AppM会向RM申请注销自己。

MapReduce过程


1.当block块被读入maptask时会将maptask进行逻辑上的划分成许多split块(block大时会划分成小split,当block较小时,可以将多个block块合并或者设置split大一点将多个block合并)

2.默认一个split对应一个maptask,根据对应关系map读取数据

3.当执行完map操作后,实际生成的不只是有key,value同时还会带有partition既分区,maptask提供了partition重写的接口,可以自定义。默认是取一条数据对key hash后再以reduce task数据取模。这样可以决定最后这条数据应当交给那个reduce操作

4.数据被写入一个环形数据缓存中默认当达到80%时,数据会进行溢写,在溢写时会首先对数据进行一次排序,先按照partition的分区号进行排序,在根据key值排序(使用桶排)产生许多外部无序内部有序的文件

5.这些小文件会进行一次merge,(当小文件过多时,此时应该设置combine,将一些重复数据做combine操作,减少了最后reduce的读取和计算量节省了Io和计算时间)既是归并合成一个大文件

6.maptask的数据被拉去既是fetch将根据分区号将相同分区号的数据拉去到一个文件中,这文件进行merge合成一个个拥有指定分区号的文件内部有序。(此时用户可以设置combine),这些小文件慢慢merge最终合并成一个文件写到hdfs上并输出给用户。

的数据拉去到一个文件中,这文件进行merge合成一个个拥有指定分区号的文件内部有序。(此时用户可以设置combine),这些小文件慢慢merge最终合并成一个文件写到hdfs上并输出给用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值