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 十万条
mr on yarn流程/yarn架构设计
container 容器
虚拟化概念 是一定的内存和cpu的资源组合
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界面查看任务是 是否完成 ,是成功还是失败。
运行任务,直到任务完成。
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压力太大,
也会在计算上,造成资源的浪费, 所以需要做小文件合并