IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop-Yarn -> 正文阅读

[大数据]Hadoop-Yarn

Hadoop-Yarn

概述

yarn是Hadoop的分布式资源管理器,可以为hadoop提供统一的资源管理和调度。

架构

Yarn总体上还是Master/Salve架构,在整个资源管理框架中,ResourceManage为Master,NodeManger为Salve,RM负责对各个NM上的资源进行统一的管理和调度,当用户提供一个用来跟踪和管理这个程序的AppMaster,它负责想RM申请资源,并要求NM启动可以占用一定资源的任务。

在这里插入图片描述

进程描述级别
ResourceManager使用Scheduler(ResourceScheduler类)和ApplicationManager(RMAppManager类)分配群集资源。守护进程
ApplicationMaster通过指示NodeManager创建或销毁Application的Container来管理Application的生命周期。一个Application只有一个ApplicationMaster进程。用户进程
NodeManager通过在群集节点中创建和销毁容器来管理特定节点中的作业或工作流。守护进程
ContainerContainer是Yarn对计算资源的抽象,它其实是一组CPU和内存资源,所有的应用都会运行在Container中。用户进程

工作流程

Hadoop Yarn上的应用程序可以分为两类,一类是短应用程序(短时间内运行完并正常退出),一类是长应用程序(不出意外,永不终止运行的应用程序)。

当用户向 YARN 中提交一个应用程序后, YARN 将分两个阶段运行该应用程序 :第一个阶段是启动 ApplicationMaster ;第二个阶段是由 ApplicationMaster 创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。具体如下:

在这里插入图片描述

1.客户端向Yarn的ResourceManager提交计算任务
2.ResourceManger为该应用程序分配第一个Container,然后在Container中启动应用程序
3.启动完成,向ResourceManger注册AppMaster
4.AppMaster想ResourceManger申请资源,ResourcerManger的Schedule组件以Container的形式回复资源列表
5.AppMaster收到资源后向响应的NodeManger通信,让目标主机分配资源启动任务,
6.NodeManger执行计算任务完成后,想AppMaster汇报任务的执行情况
7.AppMaster向ResourceManger汇报任务执行情况,之后注销并关闭自己
8.ResourceManager将执行结果返回给客户端

管理

可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、cpu等)。

webUI

可以通过浏览器输入:http://node2.itcast.cn:8088/来访问Hadoop-Yarn的管理页面:

在这里插入图片描述

正在运行的MR应用程序:

在这里插入图片描述

运行完成的MR应用程序
在这里插入图片描述

资源调度

资源调度:ResourceManager将某个NodeManager上资源分配给任务;

资源隔离:NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证;

资源调度器

FIFO Scheduler(先进先出调度器)

FifoScheduler是一个先进先出的思想,即先来的Application先运行。调度工作不考虑优先级和范围,适用于负载较低的小规模集群。当使用大型共享集群时,它的效率较低且会导致一些问题。.

Capacity Scheduler(容量调度器)

Capacity调度器可以理解成一个个的资源队列,这个资源队列是用户自己去分配的。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。一个个队列有独立的资源,队列的结构和资源是可以进行配置的
在这里插入图片描述

特性如下:

1.层次化的队列设计(Hierarchical Queues)
层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理,更容易合理分配和限制资源的使用。
2.容量保证(Capacity Guarantees)
队列上都会设置一个资源的占比,可以保证每个队列都不会占用整个集群的资源。
3.安全(Security )
每个队列又严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务。
4.弹性分配(Elasticity )
空闲的资源可以被分配给任何队列。当多个队列出现争用的时候,则会按照比例进行平衡。
5.多租户租用(Multi-tenancy)
通过队列的容量限制,多个用户就可以共享同一个集群,同事保证每个队列分配到自己的容量,提高利用率。
6.操作性(Operability)
Yarn支持动态修改调整容量、权限等的分配,可以在运行时直接修改;提供管理员界面,显示当前的队列状况;管理员可以在运行时,添加一个队列;但是不能删除一个队列;管理员可以在运行时暂停某个队列,可以保证当前的队列在执行过程中,集群不会接收其他的任务。如果一个队列被设置成了stopped,那么就不能向它或者子队列上提交任务了。
7.基于资源的调度(Resource-based Scheduling)
协调不同资源需求的应用程序,比如内存、CPU、磁盘等等。
8.基于用户/组的队列隐射(Queue Mapping based on User or Group)
允许用户基于用户或者组去映射一个作业到特定队列。
Fair Scheduler(公平调度器)

FairScheduler是一个将资源公平的分配给应用程序的方法,使所有应用在平均情况下随着时间的流逝可以获得相等的资源份额。

  • 当A启动一个job而B没有任务时,A会获得全部集群资源
  • 当B启动一个job后,A的job会继续运行,不过一会儿之后两个任务会各自获得一半的集群资源
  • 如果此时B再启动第二个job并且其它job还在运行,则它将会和B的第一个job共享B这个队列的资源,也就是B的两个job会各自使用四分之一的集群资源,而A的job仍然用于集群一半的资源,结果就是资源最终在两个用户之间平等的共享。FairScheduler将应用组织到队列中,并在这些队列之间公平地共享资源。**默认情况下,所有用户共享一个名为default的队列。**如果应用明确在容器资源请求中指定了队列,则该请求将提交到指定的队列。可以通过配置,根据请求中包含的用户名或组分配队列。在每个队列中,使用调度策略在运行的应用程序之间共享资源。默认设置是基于内存的公平共享,但是也可以配置具有优势资源公平性的FIFO和多资源。
  • 分层队列:队列可以按层次结构排列以划分资源,并可以配置权重以按特定比例共享集群。
  • 基于用户或组的队列映射:可以根据提交任务的用户名或组来分配队列。如果任务指定了一个队列,则在该队列中提交任务。
  • 资源抢占:根据应用的配置,抢占和分配资源可以是友好的或是强制的。默认不启用资源抢占。
  • 保证最小配额:可以设置队列最小资源,允许将保证的最小份额分配给队列,保证用户可以启动任务。当队列不能满足最小资源时,可以从其它队列抢占。当队列资源使用不完时,可以给其它队列使用。这对于确保某些用户、组或生产应用始终获得足够的资源。
  • 允许资源共享:即当一个应用运行时,如果其它队列没有任务执行,则可以使用其它队列,当其它队列有应用需要资源时再将占用的队列释放出来。所有的应用都从资源队列中分配资源
    组或生产应用始终获得足够的资源。
  • 允许资源共享:即当一个应用运行时,如果其它队列没有任务执行,则可以使用其它队列,当其它队列有应用需要资源时再将占用的队列释放出来。所有的应用都从资源队列中分配资源
  • 默认不限制每个队列和用户可以同时运行应用的数量。可以配置来限制队列和用户并行执行的应用
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:40:05  更:2022-06-14 22:41:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:34:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码