YARN

Mangena ·
更新时间:2024-11-10
· 605 次阅读

YARN 是 分布式资源管理系统 架构图

a.png

#组件组成: Client, ResourceManager, ApplicationMaster, NodeManager, Container #各组件描述: Client: 负责提交应用程序 ResourceManager: 全局的资源管理器, 整个集群只有一个, 负责集群资源的统一管理和调度分配; The ResourceManager has two main components: Scheduler and ApplicationsManager. 1、调度器:调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序中,需要注意的是,该调度器是一个”纯调度器”,它不再从事任何与具有应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用程序失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成,调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念”资源容器”(resource container,简称container)表示,container是一个动态资源分配单位,它将内存、cpu、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量,此外该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供多种直接可用的调度器,比如 fair scheduler和capacity scheduler等 2、应用程序管理器 应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重启它等 功能: 1. 处理客户端请求 2. 启动/监控 ApplicationMaster 3. 监控NodeManager 4. 资源分配和调度 ApplicationMaster: 在yarn上运行的应用程序实例对象,负责管理此应用程序的执行; 功能: 1. 数据切分 2. 为应用程序申请资源, 和进一步分配 3. 任务监控和容错处理 NodeManager: 整个集群有多个, 负责本节点的资源管理和使用, NodeManager管理抽象容器container 功能: 1. 单个节点上的资源管理和任务管理 2. 处理来自 ResourceManager 的命令 3. 处理来自 ApplicationMaster 的命令 Container: yarn中对资源的抽象, 封装本节点上的内存,cpu,磁盘,网络等资源, 此资源就是用container表示; yarn工作流程

b.png

#yarn工作流程 1. client端向ResourceManager提交应用程序, 也就是client端会将 jar包,参数等数据上传到hdfs上的某路径下; 2. resourceManager将此应用程序添加到任务队列中; 3. 等待资源充沛时, resourceManager为该应用程序分配第一个container,在这个container中启动应用程序的ApplicationMaster; 4. ApplicationMaster首先向ResourceManager注册,用户可以直接通过ResourceManager查看应用程序的运行状态, 还会进行分片等工作, 之后向ResourceManager申请运行任务所需的资源; 5. ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源, 发送命令让NodeManager创建container, 之后执行task; 6. ApplicationMaster监控job执行作业, 必要时候进行容错处理, 直到ApplicationMaster检测到job完成后, 向ResourceManager通知, 注销自己


from:https://www.jianshu.com/p/4df273c74b9c


作者:qq1225095213



yarn

需要 登录 后方可回复, 如果你还没有账号请 注册新账号