一、分布式计算框架MapReduce介绍(计算向数据移动)
1.1、为什么叫MapReduce
MR原语:map + reduce(MapTask & ReduceTask)输入(格式化k,v)数据map映射成一个中间数据集(k,v)reduce (sql)
“相同”的key为一组,调用一次reduce方法,方法内迭代这一组数据进行计算 (类似的sql)
1.2、计算框架MR(wordcount 单词统计)
Hadoop 1.x -- mr 1.x
(1)Map:
- 读懂数据
- 映射为KV模型
- 并行分布式
- 计算向数据移动
(2)Reduce:
- 数据全量/分量加工(partition/group)
- Reduce中可以包含不同的key
- 相同的Key汇聚到一个Reduce中
- 相同的Key调用一次reduce方法
- 排序实现key的汇聚
K,V使用自定义数据类型:
- 作为参数传递,节省开发成本,提高程序自由度
- Writable序列化:使能分布式程序数据交互
- Comparable比较器:实现具体排序(字典序,数值序等)
1.3、MRV1角色
(1)JobTracker
- 核心,主,单点
- 调度所有的作业
- 监控整个集群的资源负载
(2)TaskTracker
- 从,自身节点资源管理
- 和JobTracker心跳,汇报资源,获取Task
(3)Client
- 作业为单位
- 规划作业计算分布
- 提交作业资源到HDFS
- 最终提交作业到JobTracker
弊端:
- JobTracker:负载过重,单点故障
- 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
- 不同框架对资源不能全局管理
1.4、Hadoop YARN (MRv2)解耦资源与计算
(1)角色介绍
ResourceManager:
- 主,核心
- 集群节点资源管理
NodeManager:
- 与RM汇报资源
- 管理Container生命周期
- 计算框架中的角色都以Container表示
Container:【节点NM,CPU,MEM,I/O大小,启动命令】:
- 默认NodeManager启动线程监控Container大小,超出申请资源额度,kill
- 支持Linux内核的Cgroup