课程说明
项 | 内容 |
---|---|
课程类型 | 视屏课程 |
内容类型 | Hadoop |
课程名称 | Hadoop学习从零到一系列课程(3):YARN和MapReduce精讲 |
地址 | https://edu.youkuaiyun.com/course/detail/2343 |
时长 | 86 |
费用 | 会员免费 |
课程目录和概要
YARN部分
一.YARN诞生
- Hadoop2.0由HDFS、MapReduce和YARN三个部分组成
- MapReduce运行在YARN上
- YARN是资源管理系统
二.YARN组成
- Resource Manager(全局资源管理器,整个集群只有一个,负责集群资源统一管理和调度)
- Node Manager(节点管理器,整个集群有多个,搭建在Data Node上,负责启动MR或MPI App Mstr,单节点资源的管理和使用)
- MR App Mstr(ApplicationMaster,应用程序管理器,每个应用有一个,负责应用程序的管理,数据切分,申请资源,分配内部任务,任务监控与容错)
- Container(资源(节点、内存、cpu)容器,对任务运行环境的抽象,用来运行task)
- task(具体的任务,用来处理数据,输出结果)
三.YARN任务流程
- client 发送运行任务的命令到Resource Manager
- Resource Manager通知Node Manager创建ApplicationMaster
- ApplicationMaster向Resource Manager申请资源,Resource Manager返回资源列表
- ApplicationMaster根据资源列表到指定的Node Manager调用资源
- Node Manager生成包含所需资源的Container并运行task
四.YARN的容错性
- Resource Manager:存在单点故障,正在基于ZooKeeper实现HA(高可用)
- Node Manager:失败后,RM会通知对应的AM,AM决定如何处理失败任务(一般是换个节点重启)
- ApplicationMaster:失败后,RM负责重启,已经完成的task不受影响
MapReduce部分
一.什么是MapReduce?
- 是一种并行编程模型,用于大规模数据集的并行处理
- 使用MapReduce架构,可以自动的完成计算任务的并行化处理(资源分配,任务划分,数据分布存储、通信、容错等都会自动处理)
- 最终效果是,使用MapReduce,可以自动的实现并行处理,不需要使用者关注并行计算细节
二.MapReduce的核心编程思想
- 切分数据和任务:对于相互之间不具有计算依赖关系的大数据,划分成多部分分别实现
- 使用map和reduce两个函数提供了高层的并行编程抽象模型,map用来处理数据,reduce用来整合输出
- 统一了计算架构,隐藏了并行处理的细节
三.MapReduce组成
- MAP:用来拆分据进行处理
- Reduce:用来对map处理后的数据整合输出
- shuffle:Map和Reduce中间还有一个shuffle过程用来排序,以方便Reduce接收
四.MapReduce注意点
- 一个任务的所有map完成后,才会进入Reduce阶段
- 如果map的计算量不均衡,耗时最长的map会是瓶颈
五.MapReduce实现的功能
- 计算任务的划分和调度
- 数的分布存储和划分
- 处理数据与计算任务的同步
- 结果数据的收集整理
- 系统通信、负载平衡、计算性能优化处理
- 处理系统节点出错监测和失效恢复
学习心得
我理解YARN和MapReduce最重要的就是管理的功能,而且都用到了分层,将复杂的事情划分多层,每一层都有自己的输入、处理、输出,层与层之间各自独立并通过接口进行可控的访问。
这样的设计,将复杂的问题变成了几个简单的问题,相互独立的同时又相互关联,即可以在一起合作解决问题,又各自独立不被其他部分干扰。是个非常有效的管理方式。
如果要处理的事情简单,自然完全把控效率最高。可如果事情由量变到质变,成了非常复杂的问题,以人类智力能力的有限性,没办法完全控制,漏洞百出,自然问题层出不穷。分层、代理、模块化都是类似的思想。