百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

深入浅出Hadoop(part 4)YARN框架(hadoop框架结构详解)

ccwgpt 2024-10-23 09:22 31 浏览 0 评论

YARN产生的背景:

一、直接源于MRv1的缺陷:

1、扩展性受限。

2、单点故障。

3、难以支持MR以外的计算

二、多个计算框架各自为战,数据共享困难

1、MR:离线计算框架:高延迟,高吞吐量

2、Storm:实时计算框架。

3、Spark:内存计算框架


MR用来处理海量数据,HDFS用来存储海量数据,NN:NameNode;HA:两个NameNode



客户端需要运行一个job,提交一个请求给resource manager,resource manager收到请求后,会告诉Node Manager有新的请求,需要准备资源,同时会生成一个APP Master(管理整个任务的运行和监控),再生成一个container,封装CPU、内存。

YARN各个模块:

1、resource manager

A、处理客户端请求。

B、启动、监控APP master。如果任务失败,可以通过APP Master查看日志,分析失败原因。

C、监控Node Manager。监控集群资源,方便统一管理。

D、资源的分配与调度。

2、Node Manager(小弟)

A、单个节点上的资源管理。

B、处理resource manager上的命令。

C、处理app master上的命令。

3、APP master:

A、数据切分。把数据分片,用于并行处理。

B、为应用程序申请资源,并分配给内部任务。

C、任务的监控与容错。如果任务出错,可以自动运行,但次数有限。

YARN容错:

1、resource manager

A、Hadoop1.x版本存在单点故障问题

B、2.x版本通过zookeeper选举机制,实现HA

2、Node Manager

A、Node Manager运行任务失败后,RM将失败的任务汇报给APP master,然后通过APP master重新运行任务。

B、APP master有决定权,决定如何处理失败的任务。

3、APP master

A、APP master失败后,由resource manager负责重启,APP master只负责内部任务的容错问题。

YARN调度框架

1、双层调度框架:

A、resource manager将资源分配给APP master

B、再有APP master进行统一分配给各个任务

2、基于资源预留的调度策略

A、当资源不够时,YARN会预留资源,直到资源充足时才会释放。

B、与Apache Mesos(all or nothing:集群任务要么全部成功,要么全部失败)不同

YARN资源调度器

1、多类型的资源调度:

A、采用DRF算法。

B、目前只支持CPU和内存两种资源。

2、提供多种资源调度器。

A、FIFO,先进先出。按照优先级高低调度;如果优先级相同,则按照提交时间先后顺序;如果提交时间也相同,则按照名称。

B、fair scheduler,公平调度器,按照内存资源使用率来调度。比如一个队列有两个任务同时运行,则两个任务都会得到二分之一的资源;如果是三个任务则是三分之一。

C、capacity scheduler,容量调度器,根据容量的剩余情况来调度任务。

D、多租户资源调度器:支持资源按比例分配,也支持层级队列划分方式,支持资源抢占。

YARN资源隔离方案:

1、支持内存和CPU两种资源隔离:

A、内存是“决定生死”的资源,如果集群资源不够,则会报出内存溢出错误,整个任务直接崩掉。

B、CPU是一种“影响快慢”的资源。

2、内存隔离:

A、基于线程监控方案。启动多个线程,每个线程占用一定内存,互相不受影响。

B、基于Cgroups方案。Linux内核提供的机制,可以限制、记录、隔离进程组所使用的的物理资源,比如CPU、内存、网络IO等。

3、CPU隔离:

A、默认不隔离CPU。

B、基于Cgroups方案。

YARN资源调度语义:

1、支持的语义:

A、支持请求某个特定节点的资源。

B、支持黑名单,将某个节点加入或移除黑名单,这是YARN不会再为这个节点分配资源。

C、请求归还资源,YARN可以回收资源

2、不支持的语义

A、请求任意任意节点的资源(只能请求指定节点)

B、请求一组或者几组符合某种特质的资源

C、超细粒度的资源

D、动态调整container的资源


运行在YARN上的计算框架

1、MapReduce:离线计算框架。

2、Tez:DAG计算框架。

3、Storm:流式计算框架。

4、Spark:内存计算框架。

5、Giraph、GraphLib:图计算框架。


1.x版本:Input输入数据,接着通过map任务处理数据,接着输出数据。

2.x版本:Input输入数据,接着通过map任务处理数据,接着通过reduce进行数据的汇总,接着输出数据。

Spark:input输入数据,然后将数据分成多个stage,然后进行处理,然后输出数据。

YARN程序类型:

1、长应用类型:一直启动YARN,比如HTTP Server。

2、短应用程序:MR任务,spark任务。


离线计算框架MapReduce

1、将计算过程分成两个阶段:Map和Reduce。Map阶段会并行处理输入的数据,比如需要处理200M的数据,Map会分成两部分来处理,一份128M,一份72M,这两份数据会同时并行处理,这样效率会提高。Reduce阶段会汇总数据,写入HDFS中。

2、Shuffle连接Map和Reduce两个阶段。Shuffle会将Map输出的数据写入本地, 然后Reduce再去读取。因为数据量大,所以写入本地而不是内存。

3、只适合离线批处理程序。具有良好的扩展性和容错性、适合简单的批处理任务。

4、缺陷明显:启动开销过大,过多使用磁盘导致效率低下。


客户端提交任务给resource manager,resource manager收到任务会生成一个APP manager,然后找到一个子节点,子节点生成一个MR APP master,生成好之后,会汇报给resource manager,同时也向resource manager申请资源,申请完成后,通知Node manager运行任务,然后分配资源container,最后运行map任务和reduce任务。

相关推荐

VUE3前端开发入门系列教程二:使用iView框架辅助开发

1、安装iView新框架,支持VUE3npminstallview-ui-plus2、编辑src/main.js,添加以下内容,导入js和css到项目importViewUIPlusfrom...

万能前端框架uni app初探03:底部导航开发

前言本节我们使用uniapp的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的。一、基础知识1.tabBar如果应用是一个多tab应用,可以通过tabBar配...

Rust Web 开发框架,前端你可以选择哪个?

Rust构建一切。在如今流行的语言中,Rust可谓是将构建和高效作为自己优美的身姿在大众视野中脱颖而出。它是一门赋予每个人构建可靠且高效软件能力的语言。它有什么特性呢?高性能。Rust速度惊人且内...

连载:前端开发中纠结的Javascript框架(上)

如今,前端开发有着许许多多的框架和库。其中一些好用,一些却不尽人意。通常我们会习惯性运用某一概念,模块或句法。事实上,并没有什么万能工具。这篇文章是关于未来框架的发展趋势——那就是没有框架!我从以下几...

前端开发框架的演进架构:提升用户体验和开发效率

前端开发框架是现代Web应用开发的重要工具,它不仅可以帮助开发者构建复杂的用户界面,还能够提升用户体验和开发效率。随着Web技术的不断发展,前端开发框架也在不断演进,为开发者提供了更丰富、更高效的工具...

Google应用Mesh-TensorFlow框架,让CNN也能处理超高分辨率图像

为了要处理超高分辨率医疗图像数据,Google开发了一种空间数据分区(SpatialPartition)技术,在不牺牲图像分辨率的条件下,分析超高分辨率图像。Google使用Mesh-TensorF...

大模型安全挑战加剧:框架层漏洞成新靶心

近日,360数字安全集团发布了一份关于大模型安全漏洞的报告,揭示了当前大模型及围绕其构建的框架和应用中存在的严重安全问题。报告显示,360近期研究发现了近40个大模型相关的安全漏洞,其中既包括二进制内...

Keras 3.0正式发布:可用于TensorFlow、JAX和PyTorch

机器之心报道编辑:陈萍经过5个月的更新迭代,Keras3.0终于来了。「大新闻:我们刚刚发布了Keras3.0版本!」Keras之父FrancoisChollet在X上激动的...

TensorFlow和Keras入门必读教程(tensorflow与keras版本对应)

导读:本文对TensorFlow的框架和基本示例进行简要介绍。作者:本杰明·普朗什(BenjaminPlanche)艾略特·安德烈斯(EliotAndres)来源:华章科技01TensorFlo...

谷歌官方回应“TensorFlow遭弃”:还在投资开发,将与JAX并肩作战

鱼羊发自凹非寺量子位|公众号QbitAI终于,谷歌出面回应“TensorFlow遭弃”传闻:我们将继续致力于将TensorFlow打造为一流机器学习平台,与JAX并肩推动机器学习研究。这段时...

2025 年的PHP :现代 Web 开发的强大引擎

程序员还在吐槽PHP过时?2025年的PHP8.4直接封神了。看看最近更新的属性钩子、强类型系统,加上Laravel这些框架,老语言早就脱胎换骨。十年前说PHP弱类型容易崩代码的,现在脸疼不?联合类...

前端内卷终结者?htmx如何让开发者告别200行JS只做一个按钮

当你用React写一个点赞按钮需要引入3个状态管理库、编写80行JSX和120行钩子函数时,htmx只需要一行HTML:<buttonhx-post="/like"hx-sw...

NativePHP桌面版V1.0正式发布(元气桌面电脑版下载)

导读:各位小伙伴,使用PHP构建桌面级系统的利器,NativePHP来了。概述NativePHP是一个用于使用PHP构建桌面应用的框架。它允许PHP开发人员使用熟悉的工具和技术创建跨平台的原生应用...

PHP Laravel框架底层机制(php基本框架)

当然可以,Laravel是最受欢迎的PHP框架之一,以优雅的语法和丰富的生态而闻名。尽管开发体验非常“高端”,它的底层其实是由一系列结构清晰、职责分明的组件构成的。下面我从整体架构、核心流程、...

PHP框架之Laravel框架教程:2. 控制器、路由、视图简单介绍

2.控制器、路由、视图简单介绍我们先建立控制器,目录是:app/Http/Controllers,新建控制器Ding.php,代码如下:Ding.php:<?phpnamespaceA...

取消回复欢迎 发表评论: