09 | 为什么我们管Yarn叫作资源调度框架?
09 | 为什么我们管Yarn叫作资源调度框架?
讲述:李智慧
时长12:08大小5.56M
小结
思考题
赞 32
提建议
精选留言(60)
- 落叶飞逝的恋2018-11-17实际项目开发中,要做到依赖倒置的方法,一般就是抽象出相应的接口的方法,不依赖具体。面向接口编程。
作者回复: 是的,但是更重要的是接口是高层需求的抽象,还是底层实现的抽象。这是依赖倒置的关键,面向接口本身并不能保证依赖倒置原则,否则和接口隔离原则没有区别。
85 - nut2019-08-201。框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。 拿mapreduce计算框架举例, 比如程序需要以map reduce的方式组织,这是约束性。 比如有了map阶段,有了shuffle阶段,有了reduce阶段,就能支撑起一次大数据计算,这是支撑性。 具体你怎么map,怎么shuffle更好,怎么reduce,框架不管,交给实现者自己去权衡设计。 2。系统,是若干部分相互联系、相互作用,形成的具有某些功能的整体。 拿HDFS来举例,他有物理存储,有数据分片管理,有容灾备份机制,这些相互联系相互作用,对外提供简单存取大量数据的功能,所以谓之系统。展开共 2 条评论41
- 小千2018-11-22sql语言是不是也是依赖倒转原则?不同的数据库都要支持sql语言规范,(很多)sql语句语句都可以在不同的数据库执行。
作者回复: 依赖倒转一般是指两个实现之间的依赖关系倒转。 这里上下文的两个实现应该分别是应用程序和数据库,应用程序依赖SQL,数据库实现SQL。 但是,SQL作为规范是数据库制定的规范,是底层规范,而不是应用程序制定的,所以这种情况一般不认为是依赖倒转。
22 - hua1682018-11-17看完几期感觉没有什么能难得住大神你的,回答问题在您那里感觉都很简单……我一般学习是先找视频看一下,照着截图,练习,然后去官网看一下说明文档,看更新了哪些知识。照视频学习又要截图,感觉很慢,很费时,看官方文档又很难深入,能否请教一下自学如果能深入,是我方法不对吗?有很多问题官网都没答案的啊,google不少也搜索不出来……运维类学的东西很多,精通感觉比较难……把原理东西,理解好,慢慢锻炼能不能达到您一半的水平呢?😂展开
作者回复: 理解原理后倒推它应该是什么样,训练自己从设计者角度分析问题,而不是一味被动学习。 也是这个专栏想达到的目的。
22 - 老男孩2018-11-19突然明白了,这么多年都是错误的观点。我之前的所谓分层展现层,服务层,持久层其实都是上层依赖下层的抽象,不是依赖倒置。
作者回复: 是的👍🏻
21 - 生活在别处2019-02-19老师,资源调度和计算调度的区别是什么?
作者回复: 资源调度如Yarn,管理的是集群中的计算资源,如CPU、内存的分配和回收。 计算调度应该是计算任务调度,如map和reduce的任务或者spark的任务,应该在哪个container启动,启动前后顺序管理等。
19 - 纯洁的憎恶2018-11-18MapReduce框架遵循把程序发送到数据存储位置运行的原则。而资源调度框架的任务是动态调配计算资源(内存+cpu),那么就很有可能出现本地数据需要发送到其他节点计算的情况,于是就会有网络传输大量数据的现象,这是否与程序在数据存储节点运行的初衷相悖呢?我这么理解对么?
作者回复: 有可能。 不用yarn也会有这个问题。 网络效率这几年提升很快,这个问题不严重。
16 - 席席2020-05-18李老师。框架:指的是能兼容一类底层问题的技术,这么理解可以嘛?Spring 的依赖注入指的是框架嘛?
作者回复: 框架是对某一类架构方案可复用的设计与实现。所有的 Web 应用都需要监听 HTTP 端口,也需要处理请求参数,这些功能不应该在每个 Web 应用中都被重复开发,而是应该以通用组件的形式被复用。但并不是所有可被复用的组件都被称作框架,框架通常规定了一个软件的主体结构,可以支撑起软件的整体或者局部的架构形式。比如说,Tomcat 完成了 Web 应用请求响应的主体流程,我们只需要开发 Servlet,完成请求处理逻辑,构造响应对象就可以了,所以 Tomcat 是一个框架。还有一类可复用的组件不控制软件的主体流程,也不支撑软件的整体架构,比如 Log4J 提供了一个可复用的日志输出功能,但是,日志输出功能不是软件的主体结构,所以我们通常不称 Log4J 为框架,而称其为工具。 回答很精彩啊
9 - 李二木2018-11-19强烈建议老师加餐一篇你对架构设计理解的文章。^^
作者回复: 也许我们将来可以再开个架构的专栏😁
7 - 多襄丸2018-11-19老师、我看了一下,还是不知道MR程序是怎么分发的,提问如下:应用程序给ResourceManager提交了MR应用程序、ResourceManager给MR应用程序分配了首节点、并在分配的首节点上分配了MapReduce ApplicationMaster、以及分配了MapReduce ApplicationMaster的容器,MapReduce Application 启动后和其他节点通信,会分发MapReduce应用程序。可是这个时候ApplicationMaster并没有MR应用程序啊?它的MR是怎么来的呢?在是在ResourceManager分配ApplicationMaster的时候,给ApplicationMaster分配了MR应用程序吗?还是怎么回事啊?不知道我描述清楚没有,麻烦老师解答一下!展开8
- 涤生2019-11-03有没有可能存在一种情况就是,在分布式集群中,DataNode存了10G的数据,但是该节点服务器计算资源很少了(假设系统中已经有其他大数据应用在跑),其他DataNode也是存了10G数据,但是其他阶段计算资源都很充足,那最后是不是就导致了整个reduce操作都要等当前的map操作结束了才能执行,大大降低了整个程序的计算效率。
作者回复: map 和 reduce任务分配优先分配处理本机数据,如果本机没有计算资源了,会分配到其他机器上,不会等待本机资源释放后在分配。 对于已经分配的任务,如果本机计算慢,会在其他机器启动备份task,也就是同一个任务会在多个机器同时执行,使用先执行完的任务结果进行后续计算。
6 - 杰之72019-02-10通过这一节的复习,到这里为止,我们对Hadoop生态就有了一个全面的认识。包括HDFS分布式文件系统架构,MR计算框架,Yarn资源调度框架。 在大数据技术发展的过程中,多种计算框架的出现及数据存储在HDFS中,这样就伴随Yarn(Yet another resource negotiator)的出现。Yarn主要由资源管理器和节点管理器构成。资源管理器负责整个集群的资源调度管理。节点管理器负责对具体服务器的资源和任务管理。 在Yarn的整个工作流程中,首先向Yarn提交应用程序。RM和NM进行通信,分配容器,并在容器中启动MR ApplicationMaster。MR application向RM进行注册,为应用程序申请程序资源,MRAM与NM进行通信,将MR的程序分发到NM所在服务器中并在容器中运行。运行结束后进行注销容器资源。 在大数据技术中,HDFS称为系统,MR和YARN称为框架,遵循的原则是依赖倒转原则。高层模块不能依赖低层模块,它们通过依耐一个抽象,这个抽象由高层模块定义,由低层模块实现。在Java web 中,Tomcat,Spring MVC就相当于高层模块,具体写的程序就相当于底层代码。展开共 1 条评论6
- 小辉辉2018-11-18老师讲得通俗易懂,没接触大数据之前,一直以为大数据是很高深的东西。经过几讲的了解之后,通过从原理出发,上手就很容易了。6
- jimmy2019-05-24依赖倒置正式在DDD中倡导和广泛采用的,dao抽象成资源仓库的概念,资源访问的接口在另一层定义,面向业务的;而资源仓库的具体实现在基础资源层,即dao的实现,这样基础资源层就像插件一样,注入到领域层,实现了依赖倒置5
- 蜡笔小新2018-11-24老师请教一下,MapReduce ApplicationMaster怎么计算出需要多少资源的呢?
作者回复: 根据数据量和分片大小计算,相除就可以。
5 - Mcnulty2018-11-19前文中写道 3.JobTacker 根据作业调度策略创建 JobInProcess 树,每个作业都会有一个自己的 JobInProcess 树。 6. 如果 TaskTracker 有空闲的计算资源(有空闲 CPU 核心),JobTracker 就会给它分配任务。 可以理解为jobtracker 在服务器A上,负责整个job的调度,包括subjob的生成与分发。tasktracker在服务器B C D上,负责subjob的执行mapreduce。 本文中写道: 这种架构方案的主要缺点是,服务器集群资源调度管理和 MapReduce 执行过程耦合在一起,如果想在当前集群中运行其他计算任务,比如 Spark 或者 Storm,就无法统一使用集群中的资源了。 这里说的 服务器集群资源调度与mapreduce执行过程耦合,在前文中具体是怎么体现的呢?不太理解展开
作者回复: 我觉得你已经描述很清楚了,资源管理和执行过程耦合,再感受一下~
4 - 星一2019-10-05您好,请问一下,Yarn的工作流程中(以MapReduce为例)只会向ResourceManager申请两次容器资源吗,一次用来运行ApplicationMaster,一次用来运行MapReduce程序
作者回复: 是的,MapReduce是这样。 但是ResourceManager本身并没有限制。
4