自学内容网 自学内容网

Hadoop(YARN)

YARN基础架构

YARN是Hadoop集群的资源管理和调度系统,它负责为各种分布式计算任务分配和管理资源,包含以下组件:ResourceManager,NodeManager,ApplicationMaster, Container。

  • ResourceManager(RM):负责整个集群的资源管理和分配,接收来自NodeManager的资源使用报告,并根据策略分配资源给各个应用程序。
  • NodeManager(NM):运行在单个节点上,负责管理单个节点的资源,如CPU和内存,并向ResourceManager汇报资源使用情况。
  • ApplicationMaster(AM):负责为每个应用程序申请资源和任务调度,向ResourceManager申请资源,再与NodeManager交互以启动和监控任务。
  • Container :YARN中的资源抽象,封装了某个节点上的资源,如内存和CPU等,Container是执行任务的基本单位。
    在这里插入图片描述

YARN工作原理

在这里插入图片描述
一开始提交 MR 程序到客户端所在节点,然后YarnRunner 向 ResourceManager 申请一个 Application,ResourceManager 将运行该应用程序的资源提交路径返回给 YarnRunner,应用程序根据路径将运行所需资源(运行jar包和切片参数等信息)提交到 HDFS 上,资源提交完毕后,向ResourceManager 申请运行 mrAppMaster,ResourceManager 将用户的请求初始化为一个Task放入FIFO队列中,NodeManager 再从FIFO队列领取Task 后创建Container容器,Container 从 HDFS 上下载运行资源到本地,然后运行 MRAppmaster程序,MRAppmaster 向 ResourceManager 申请运行 MapTask ,ResourceManager 将请求封装为task放入队列中,其他 NodeManager从队列领取任务并创建容器,MRAppmaster 向领取到任务的 NodeManager 发送程序启动脚本,NodeManager 执行 MapTask,执行完后数据存储在分区,MrAppMaster 等所有 MapTask 执行完,向 ResourceManager 申请容器运行 ReduceTask,ReduceTask 向 MapTask 获取执行结果并汇总,程序运行完毕后,MrAppMaster 会向 ResourceManager 申请注销自己。

YARN调度器和调度算法

Hadoop作业调度器主要有三种,分别是先进先出调度器(FIFO)、容量调度器(Capacity Scheduler)和公平调度器(Fair Scheduler), 在Hadoop3.1.3中, 默认的资源调度器是容量调度器,CDH 框架默认调度器是公平调度器。

先进先出调度器

FIFO 调度器(First In First Out):一个队列根据作业提交的先后顺序,先来先服务。
在这里插入图片描述
优点:易于理解,实现简单。
缺点:只支持单个队列,无法满足多用户或多应用程序同时运行。

容量调度器

容量调度器是Yahoo开发的多用户调度器,它支持多队列,每个队列可以配置一定的资源量。
在这里插入图片描述
特点:

  • 多队列:每个队列可配置一定的资源量,采用FIFO调度策略。

  • 容量保证:可以为每个队列设置资源最低保证和使用上限。

  • 灵活性:当队列资源有剩余时,可以先借给其他队列使用,等该队列有新的应用程序提交时,其他队列需要归还资源给该队列。

  • 多租户:支持多用户共享集群资源,为了防止单个用户作业独占队列资源,可以限定用户作业所占的资源量。

容量调度器的资源分配策略
在这里插入图片描述

  • 队列资源分配方式

    从根节点出发,使用dfs算法,系统优先选择资源占用率最低的队列来分配资源。

  • 作业资源分配方式

    默认情况下,根据作业提交的优先级以及提交的时间先后顺序分配。

  • 容器资源分配方式

    首先按照容器的优先级分配,若优先级相同,则根据数据本地性原则进行分配:首选任务和数据位于同一节点的情况,其次是任务和数据在同一机架但不同节点的情况,最后是任务和数据既不在同一节点也不在同一机架的情况。

公平调度器

公平调度器是一个多用户调度器,具有容量调度器以上的所有特点。公平调度器设计目标是:在时间维度上,所有的作业能够得到公平的资源分配,一个作业应获的资源和实际获取资源的差距叫缺额,公平调度器会优先为缺额大的作业分配更多的资源,从而缩小各个作业之间的资源差距。

在这里插入图片描述
与容量调度器的区别

  1. 调度策略不同

容量调度器:优先选择资源利用率低的队列分配资源。
公平调度器:优先选择资源缺额比例大的队列分配资源。

  1. 队列资源分配方式不同

容量调度器:FIFO、 DRF

公平调度器:FIFO、FAIR、DRF

公平调度器的资源分配策略

1)FIFO策略

公平调度器若采用此策略就相当于容量调度器。

2)Fair策略(默认的实现方式)

Fair基于公平算法分配资源,若一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源,如果有三个应用程序同时运行,则每个应用程序可得到1/3的资源。

资源的分配流程和容量调度器一致,按照队列,作业,容器的顺序分配,每一步都是按照公平策略分配资源。

在这里插入图片描述

YARN常用命令

启动YARN

./start-yarn.sh

在这里插入图片描述

再启动历史服务器

 mapred --daemon start historyserver

在这里插入图片描述

访问localhost:19888/jobhistory/app查看YARN的WEB UI页面
在这里插入图片描述
1)查看所有任务

yarn application -list

2)Kill 掉任务

yarn application -kill applicationId

3)查看Container日志

yarn logs -applicationId -containerId

4)查看Application日志

yarn logs -applicationId

5)查看所有容器

yarn container -list

6)查看队列

yarn queue -status default

7)查看节点

yarn node -list -all

原文地址:https://blog.csdn.net/weixin_42828342/article/details/143637448

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!