MapReduce
为什么叫MapReduce
map和reduce,见名知意 MapTask和ReduceTask
MR语义
“相同”的key为一组,调用一次reduce方法,方法内迭代这一组数据进行计算
理解
Map 读懂数据 映射为KV模型 并行分布式 计算向数据移动 Reduce 数据全量/分量加工 Reduce中可以包含不同的key 相同的Key汇聚到一个Reduce中 相同的Key调用一次reduce方法 排序实现key的汇聚 K,V使用自定义数据类型 作为参数传递,节省开发成本,提高程序自由度 Writable序列化:使能分布式程序数据交互 Comparable比较器:实现具体排序(字典序,数值序等)
MapReduce1.x
JobTracker 核心,主,单点 调度所有的作业 监控整个集群的资源负载 TaskTracker 从,自身节点资源管理 和JobTracker心跳,汇报资源,获取Task Client 作业为单位 规划作业计算分布 提交作业资源到HDFS 最终提交作业到JobTracker 弊端: JobTracker:负载过重,单点故障 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理 不同框架对资源不能全局管理 执行过程 客户端规划清单 jobTracker作为管理进程 负责资源管理和任务调度 TaskTracker和jobTracker有心跳
MapReduce2.x
On Yarn YARN:解耦资源与计算 ResourceManager 主,核心 集群节点资源管理 NodeManager 与RM汇报资源 管理Container生命周期 计算框架中的角色都以Container表示 Container:【节点NM,CPU,MEM,I/O大小,启动命令】 默认NodeManager启动线程监控Container大小,超出申请资源额度,kill 支持Linux内核的Cgroup MR : MR-ApplicationMaster-Container 作业为单位,避免单点故障,负载到不同的节点 创建Task需要和RM申请资源(Container) Task-Container Client: RM-Client:请求资源创建AM AM-Client:与AM交互 执行过程 client和ResourceManager通信,将处理文件信息发给ResourceManager RM和NM心跳通信,知道哪台服务器资源多,进行任务分配 DataNode服务器开启Container,并在container中开启AppM appM负责任务调度
Yarn
Hadoop 2.0新引入的资源管理系统,直接从MRv1演化而来的; 核心思想 核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现 ResourceManager ResourceManager:负责整个集群的资源管理和调度 ApplicationMaster ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等 优点 YARN的引入,使得多个计算框架可运行在一个集群中 每个应用程序对应一个ApplicationMaster 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等