从0开始学大数据
李智慧
同程艺龙交通首席架构师,前Intel大数据架构师,《大型网站技术架构》作者
立即订阅
14333 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么说每个软件工程师都应该懂大数据技术?
免费
预习模块 (3讲)
预习 01 | 大数据技术发展史:大数据的前世今生
预习 02 | 大数据应用发展史:从搜索引擎到人工智能
预习 03 | 大数据应用领域:数据驱动一切
模块一 Hadoop大数据原理与架构 (7讲)
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
模块二 大数据生态体系主要产品原理与架构 (7讲)
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
模块三 大数据开发实践 (8讲)
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
模块四 大数据平台与系统集成 (6讲)
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
模块五 大数据分析与运营 (5讲)
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
模块六 大数据算法 (6讲)
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
智慧写给你的寄语 (1讲)
所有的不确定都是机会——智慧写给你的新年寄语
结束语 (2讲)
结束语 | 未来的你,有无限可能
第2季回归丨大数据之后,让我们回归后端
从0开始学大数据
登录|注册

09 | 为什么我们管Yarn叫作资源调度框架?

李智慧 2018-11-17
我们知道,Hadoop 主要是由三部分组成,除了前面我讲过的分布式文件系统 HDFS、分布式计算框架 MapReduce,还有一个是分布式集群资源调度框架 Yarn。但是 Yarn 并不是随 Hadoop 的推出一开始就有的,Yarn 作为分布式集群的资源调度框架,它的出现伴随着 Hadoop 的发展,使 Hadoop 从一个单一的大数据计算引擎,成为一个集存储、计算、资源管理为一体的完整大数据平台,进而发展出自己的生态体系,成为大数据的代名词。
所以在我们开始聊 Yarn 的实现原理前,有必要看看 Yarn 发展的过程,这对你理解 Yarn 的原理以及为什么被称为资源调度框架很有帮助。
先回忆一下我们学习的 MapReduce 的架构,在 MapReduce 应用程序的启动过程中,最重要的就是要把 MapReduce 程序分发到大数据集群的服务器上,在 Hadoop 1 中,这个过程主要是通过 TaskTracker 和 JobTracker 通信来完成。
这个方案有什么缺点吗?
这种架构方案的主要缺点是,服务器集群资源调度管理和 MapReduce 执行过程耦合在一起,如果想在当前集群中运行其他计算任务,比如 Spark 或者 Storm,就无法统一使用集群中的资源了
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(46)

  • 落叶飞逝的恋
    实际项目开发中,要做到依赖倒置的方法,一般就是抽象出相应的接口的方法,不依赖具体。面向接口编程。

    作者回复: 是的,但是更重要的是接口是高层需求的抽象,还是底层实现的抽象。这是依赖倒置的关键,面向接口本身并不能保证依赖倒置原则,否则和接口隔离原则没有区别。

    2018-11-17
    30
  • 小千
    sql语言是不是也是依赖倒转原则?不同的数据库都要支持sql语言规范,(很多)sql语句语句都可以在不同的数据库执行。

    作者回复: 依赖倒转一般是指两个实现之间的依赖关系倒转。
    这里上下文的两个实现应该分别是应用程序和数据库,应用程序依赖SQL,数据库实现SQL。

    但是,SQL作为规范是数据库制定的规范,是底层规范,而不是应用程序制定的,所以这种情况一般不认为是依赖倒转。

    2018-11-22
    7
  • 纯洁的憎恶
    MapReduce框架遵循把程序发送到数据存储位置运行的原则。而资源调度框架的任务是动态调配计算资源(内存+cpu),那么就很有可能出现本地数据需要发送到其他节点计算的情况,于是就会有网络传输大量数据的现象,这是否与程序在数据存储节点运行的初衷相悖呢?我这么理解对么?

    作者回复: 有可能。
    不用yarn也会有这个问题。
    网络效率这几年提升很快,这个问题不严重。

    2018-11-18
    6
  • 老男孩
    突然明白了,这么多年都是错误的观点。我之前的所谓分层展现层,服务层,持久层其实都是上层依赖下层的抽象,不是依赖倒置。

    作者回复: 是的👍🏻

    2018-11-19
    5
  • 星辰
    老师、我看了一下,还是不知道MR程序是怎么分发的,提问如下:应用程序给ResourceManager提交了MR应用程序、ResourceManager给MR应用程序分配了首节点、并在分配的首节点上分配了MapReduce ApplicationMaster、以及分配了MapReduce ApplicationMaster的容器,MapReduce Application 启动后和其他节点通信,会分发MapReduce应用程序。可是这个时候ApplicationMaster并没有MR应用程序啊?它的MR是怎么来的呢?在是在ResourceManager分配ApplicationMaster的时候,给ApplicationMaster分配了MR应用程序吗?还是怎么回事啊?不知道我描述清楚没有,麻烦老师解答一下!
    2018-11-19
    5
  • Li Shunduo
    请问Yarn里的容器和docker这一类容器有什么关系吗?

    作者回复: 没有关系。两种容器设计思路差不多,docker更通用。

    2018-11-17
    5
  • 生活在别处
    老师,资源调度和计算调度的区别是什么?

    作者回复: 资源调度如Yarn,管理的是集群中的计算资源,如CPU、内存的分配和回收。
    计算调度应该是计算任务调度,如map和reduce的任务或者spark的任务,应该在哪个container启动,启动前后顺序管理等。

    2019-02-19
    4
  • 小辉辉
    老师讲得通俗易懂,没接触大数据之前,一直以为大数据是很高深的东西。经过几讲的了解之后,通过从原理出发,上手就很容易了。
    2018-11-18
    4
  • hua168
    看完几期感觉没有什么能难得住大神你的,回答问题在您那里感觉都很简单……我一般学习是先找视频看一下,照着截图,练习,然后去官网看一下说明文档,看更新了哪些知识。照视频学习又要截图,感觉很慢,很费时,看官方文档又很难深入,能否请教一下自学如果能深入,是我方法不对吗?有很多问题官网都没答案的啊,google不少也搜索不出来……运维类学的东西很多,精通感觉比较难……把原理东西,理解好,慢慢锻炼能不能达到您一半的水平呢?😂

    作者回复: 理解原理后倒推它应该是什么样,训练自己从设计者角度分析问题,而不是一味被动学习。
    也是这个专栏想达到的目的。

    2018-11-17
    4
  • nut
    1。框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

    拿mapreduce计算框架举例,
    比如程序需要以map reduce的方式组织,这是约束性。
    比如有了map阶段,有了shuffle阶段,有了reduce阶段,就能支撑起一次大数据计算,这是支撑性。
    具体你怎么map,怎么shuffle更好,怎么reduce,框架不管,交给实现者自己去权衡设计。


    2。系统,是若干部分相互联系、相互作用,形成的具有某些功能的整体。

    拿HDFS来举例,他有物理存储,有数据分片管理,有容灾备份机制,这些相互联系相互作用,对外提供简单存取大量数据的功能,所以谓之系统。
    2019-08-20
    3
  • 三木子
    强烈建议老师加餐一篇你对架构设计理解的文章。^^

    作者回复: 也许我们将来可以再开个架构的专栏😁

    2018-11-19
    3
  • Mcnulty
    前文中写道
    3.JobTacker 根据作业调度策略创建 JobInProcess 树,每个作业都会有一个自己的 JobInProcess 树。
    6. 如果 TaskTracker 有空闲的计算资源(有空闲 CPU 核心),JobTracker 就会给它分配任务。
    可以理解为jobtracker 在服务器A上,负责整个job的调度,包括subjob的生成与分发。tasktracker在服务器B C D上,负责subjob的执行mapreduce。

    本文中写道:
    这种架构方案的主要缺点是,服务器集群资源调度管理和 MapReduce 执行过程耦合在一起,如果想在当前集群中运行其他计算任务,比如 Spark 或者 Storm,就无法统一使用集群中的资源了。
    这里说的 服务器集群资源调度与mapreduce执行过程耦合,在前文中具体是怎么体现的呢?不太理解

    作者回复: 我觉得你已经描述很清楚了,资源管理和执行过程耦合,再感受一下~

    2018-11-19
    3
  • 宝宝疯
    理解原理后倒推它应该是什么样,训练自己从设计者角度分析问题,而不是一味被动学习。
    回答很精彩啊
    2018-11-27
    2
  • 蜡笔小新
    老师请教一下,MapReduce ApplicationMaster怎么计算出需要多少资源的呢?

    作者回复: 根据数据量和分片大小计算,相除就可以。

    2018-11-24
    2
  • 梁中华
    提个建议,可以多放一些留言出来,鼓励大家多留言,老师多互动,这样热闹一些,学习氛围更浓一些。
    2018-11-19
    2
  • hunterlodge
    老师前面说"每个应用程序启动后都会先启动自己的 ApplicationMaster",后面具体mapReduce例子里又是先启动ApplicationMaster的,这不矛盾吗?

    作者回复: 应用程序指client,最先启动,通常不在Hadoop集群中。client提交作业后,是am在Hadoop中启动,对hadoop而言可以认为是am最先启动。

    2018-11-19
    2
  • 杰之7
    通过这一节的复习,到这里为止,我们对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就相当于高层模块,具体写的程序就相当于底层代码。
    2019-02-10
    1
  • Wiggle Wiggle
    在service中使用的是dao的接口,接口规定了一类dao所要实现的功能,比如crud操作。crud操作的实现由具体的dao类实现,具体实现可能会因为数据库的改变而改变,但任何改变都不会影响service
    2019-02-01
    1
  • tom
    依赖倒转原则还是不太清楚,service层抽象通用的crud操作,在crud方法中调用基类dao的方法,这个符合依赖倒转原则吗?

    作者回复: 不符合,还是上层依赖下层。

    2019-01-17
    1
  • Jowin
    请教老师,关于mapreduce和yarn的结合,是不是mapreduce ApplicationMaster 向资源管理器申请计算资源时可以指定目标节点(数据分片所在节点),而如果系统资源能够满足,就会把mapreduce计算任务分发到指定的服务器上。如果资源不允许,比如目标节点非常繁忙,这时部分mapreduce计算任务可能会分配另外的服务器(数据分片不在本地)?也就是说,yarn对资源调度是尽力而为,不保值一定满足ApplicationMaster的要求,这个理解正确么?

    作者回复: 是的

    2018-12-01
    1
    1
收起评论
46
返回
顶部