1. MapReduce
概述:
- 一个最终完整版本的MR程序需要
用户编写的代码 和Hadoop自己实现的代码 整合在一起才可以; - 其中用户负责map、reduce两个阶段的业务问题,Hadoop负责底层所有的技术问题;
MapReduce核心思绪:先分再合,分而治之 ,主要目的:并行运行任务,提高效率。 注意: 不可拆分的计算任务或相互间有依赖关系的数据无法并行计算:
MapReduce特点:
易于编程 :简单的接口就可以完成分布式程序;良好的扩展性 :MR的分布式计算的特点可以随节点数据增长保持近似于线性增长,增加机器,就可以可以处理海量数据;高容错性 :离线计算 :实时计算性能差 :不能进行流行计算 :
MapReduce实例: 一个完整的MapReduce程序在分布式运行时有三类
MRAppMaster :负责整个MR程序的过程调度及状态协调MapTask: 负责map阶段的整个数据处理流程ReduceTask :负责reduce阶段的整个数据处理流程
MaprReduce的阶段组成:
- 一个MapReduce编程模型中只能包含
一个Map阶段和一个Reduce阶段,或者只有Map阶段 ; - 不能有诸如多个map阶段、多个reduce阶段的情景出现;
- 如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行。
2. YARN
YARN概述:YARN是一个通用资源管理系统和调度平台 ,可为上层应用提供统一的资源管理和调度。
YARN功能说明:
资源管理系统 ︰集群的硬件资源,和程序运行相关,比如内存 、CPU 等。调度平台 ∶多个程序同时申请计算资源如何分配 ,调度的规则(算法)。通用 ∶不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。
YARN架构图:
ResourceManager ( RM ) YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者 。接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。NodeManager (NM ) YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源 。根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。ApplicationMaster ( AM ) 用户提交的每个应用程序均包含一个AM. 应用程序内的“老大” ,负责程序内部各阶段的资源申请,监督程序的执行情况。
YARN的三种调度策略:
FIFO sheduler : 先进先出 优势:无需配置,先到先得,易于执行。 坏处:任务的优先级不会变高,因此高优先级的作业需要等待不适合共享集群。
Capacity scheduler :为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源。(YARN的默认调度器) 优势: 层次化的队列设计、容量保证、安全、弹性分配。 坏处:不能公平的分配资源。
Fair Scheduler :公平共享资源 **优势:**公平共享资源、资源抢先、基于用户或组的队列映射。
参考: https://www.bilibili.com/video/BV1CU4y1N7Sh?p=39&spm_id_from=pageDriver
|