hadoop五:hadoop之YARN及MapReduce工作流程
云计算中,分为三个层次的服务:IaaS、PaaS、Saas
Iaas:Infrastructure-as-a-Service,基础设施即服务。消费者通过internet可以从完善的计算基础设施获得服务。IaaS通过网络向用户提供计算机(物理机和虚拟机)、存储空间、网络连接、负载均衡和防火墙等基础的计算资源。用户在此基础上部署和运行各种软件,包括操作系统和应用程序。
PaaS:Platform-as-a-Service,平台即服务。Paas是将软件研发的平台作为一种服务,以SaaS的模式提交给用户。平台通常包括操作系统、编程语言的运行环境、数据库和Web服务器等,用户可以在平台上部署和运行自己的应用。通常而言,用户不能管理和控制底层的基础设施,只能控制自己部署的应用。
SaaS:Software-as-a-Service,软件即服务。它是一种通过internet提供软件的模式。用户无需购买软件,而是向提供商租用基于web的软件 ,来管理企业经营活动。云提供商在云端安装和运行应用软件,云用户通过客户端(如web浏览器)使用软件。
从云计算的分层概念上来说,YARN可以看做PAAS尺寸参差 ,它能够为不同类型的应用程序提供统一的管理和调度。
YARN的设计目标:
- 通用的统一资源管理系统:同时运行长应用程序和短应用程序
- 长应用程序:通常情况下,永不停止运行,如service(hadoop、spark、storm)、HTTP Server等
- 短应用程序:短时间(秒级、分钟级、小时级)内,会运行结的程序,如MR job、Spark Job等
YARN的服务组件:
- client
- ResourceManager、Application Master ---主
- NodeManager、Container ---从
- 其它组件:JobHistoryServer、TimeLineServer
YARN总体上,仍然是主从结构,在整个资源管理框架中,ResourceManager为主,NodeManager是从。
ResourceManager负责对各个NodeManager上的资源进行统一管理和调度
当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的
Application Master,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务。
由于不同的Application Master被分布到不同的节点上,因此它们之间不会相互影响。
ResourceManager:全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配
ResourceManager的功能:
- 处理客户端请求
- 启动、监控Application Master
- 监控NodeManager
- 资源分配与调度
NodeManager:整个集群有多个,负责单节点资源管理和使用
NodeManager的功能:
- 单个节点上的资源管理和任务管理
- 处理来自ResourceManager的命令
- 处理来自Application Master的命令
NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态
Application Master:管理一个在YARN内运行的应用程序的每个实例
Application Master的功能:
- 数据切分
- 为应用程序申请资源,并进一步分配给内部任务
- 任务监控与容错
负责协调来自RM的资源,并通过NM监视容器的执行和资源使用(cpu、内存等资源分配)
Container:YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、硬盘、网络等,当AM向RM申请资源时,RM向AM返回的资源便是用Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用Container中描述的资源。
Container的功能:
- 对任务运行环境的抽象
- 描述一系列信息
- 任务运行资源(节点、内存、CPU)
- 任务启动命令
- 任务运行环境
YARN的优势 :
- 更快地MapReduce计算:YARN利用异步模型对MapReduce框架的一些关键逻辑结构(如JobInprogress、TaskInProgress等)进行了重写,相比于hadoop1.0,具有更快的计算速度
- 对多框架支持:YARN不再是一个单纯的计算框架,而是一个框架管理器,用户可将各种各样的计算框架移植到YARN之上
- 框架升级更容易:在YARN中,种种计算框架不再是作为一个服务部署到集群的各个节点上(比如MapReduce框架,不再需要部署JobTracler、TaskTracker等服务),而是被封装成一个用户程序库lib,存放在客户端。当需要对计算框架进行升级时,只需升级用户程序库即可!
YARN资源管理:
资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由RM完成,资源隔离由NM实现。
RM将某个NM上资源分配给任务后(这就是资源调度),NM需按照要求为任务提供相应的资源,甚至保证这些资源应用具有独占性,为任务运行提供基础的保证,这就是资源隔离。
当谈及到资源时,通常指内存、CPU和IO三种资源。YARN同时支持内存和CPU两种资源的调度。
内存资源的多少会决定任务的生死。如果内存不够,任务可能会运行失败;相比这下,CPU资源则不同,它只会决定任务的快慢,不会对生列产生影响。
YARN的架构图和工作流程:
RM有两个核心组件:调度器和AM
posted on 2018-09-06 23:59 myworldworld 阅读(204) 评论(0) 收藏 举报