mr on yarn流程/yarn架构设计

this is about mr on yarn

Posted by PsycheLee on 2018-09-08

mr on yarn流程/yarn架构设计

MapReduce

分布式计算框架

map映射

指的是一组数据按照规则映射为一组
string=a b a
(a,1)
(b,1)
(a,1)

reduce 归约 汇总

​ (a,2)
​ (b,1)

【shuffle】 洗牌

​ 数据根据key进行网络传输规整到一起,按规则计算
​ hadoop001 id=1 name=a 一百万条
​ 2 b 十万条

​ hadoop002 id=1 name=a 一万条
​ 3 c 十万条

WordCount

mr on yarn流程/yarn架构设计

container 容器

虚拟化概念 是一定的内存和cpu的资源组合

container

100件货

1个房间1g内存 1个人 vcore: 100h
1个房间1g内存 5个人 vcore: 20h
在内存够的情况下,适当增加cpu vcore来提升计算的并行度 ,提高效率

预留 38G

系统需要+预留未来新增服务所需内存,防止出现【oom-killer机制】

https://www.jianshu.com/p/85ac4bdcb9ba

流程

1.Client 向RM提交应用程序,其中包含applicationmaster主程序和启动命令
2.applications manager 会为【应用程序分配第一个container容器】,来运行applicationmaster主程序
3.applicationmaster主程序就会向applications manager 注册,就可以做yarn的web界面上看到job的运行状态
4.applicationmaster主程序采取轮询的方式通过【rpc】协议向resourcescheduler,申请和领取资源(哪台机器 领取多少内存 多少cpu VCORE)

启动applicationmaster主程序,领取资源;

5.一旦applicationmaster主程序拿到资源的列表,就和对应的nm进程进行通信,要求启动container来运行task任务
6.nm就为task任务设置好运行的环境(container容器),将任务启动命令写在脚本里,并且通过脚本启动任务task
7.各个container的task 任务(map task、reduce task任务),通过【rpc】协议
向applicationmaster主程序进行汇报进度和状态,以此让applicationmaster主程序随时掌握task的运行状态。
当task任务运行失败,也会重启container任务
8.当所有的task任务全部完成,applicationmaster主程序会向applications manager 申请注销和关闭作业,这时在web界面查看任务是 是否完成 ,是成功还是失败。

运行任务,直到任务完成。

mr

wordcount

split规则:
块大小
1个文件 260M,128M 128M 4M

文件个数
10个小文件 1M
1 1M 1
2 1M 1
10 1M 1

= 10个 map

10 container 容器 10G

10个小文件 合并1个大文件 100M 1块
1 container 1G

总结:小文件危害
不光光在存储上,小文件过多对 NN压力太大,
也会在计算上,造成资源的浪费, 所以需要做小文件合并