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

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

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

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

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

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

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

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

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


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

    拿HDFS来举例,他有物理存储,有数据分片管理,有容灾备份机制,这些相互联系相互作用,对外提供简单存取大量数据的功能,所以谓之系统。
    展开
    
     5
  • 老男孩
    2018-11-19
    突然明白了,这么多年都是错误的观点。我之前的所谓分层展现层,服务层,持久层其实都是上层依赖下层的抽象,不是依赖倒置。

    作者回复: 是的👍🏻

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

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

    
     5
  • hua168
    2018-11-17
    看完几期感觉没有什么能难得住大神你的,回答问题在您那里感觉都很简单……我一般学习是先找视频看一下,照着截图,练习,然后去官网看一下说明文档,看更新了哪些知识。照视频学习又要截图,感觉很慢,很费时,看官方文档又很难深入,能否请教一下自学如果能深入,是我方法不对吗?有很多问题官网都没答案的啊,google不少也搜索不出来……运维类学的东西很多,精通感觉比较难……把原理东西,理解好,慢慢锻炼能不能达到您一半的水平呢?😂

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

    
     5
  • 生活在别处
    2019-02-19
    老师,资源调度和计算调度的区别是什么?

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

    
     4
  • 三木子
    2018-11-19
    强烈建议老师加餐一篇你对架构设计理解的文章。^^

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

    
     4
  • 小辉辉
    2018-11-18
    老师讲得通俗易懂,没接触大数据之前,一直以为大数据是很高深的东西。经过几讲的了解之后,通过从原理出发,上手就很容易了。
    
     4
  • Mcnulty
    2018-11-19
    前文中写道
    3.JobTacker 根据作业调度策略创建 JobInProcess 树,每个作业都会有一个自己的 JobInProcess 树。
    6. 如果 TaskTracker 有空闲的计算资源(有空闲 CPU 核心),JobTracker 就会给它分配任务。
    可以理解为jobtracker 在服务器A上,负责整个job的调度,包括subjob的生成与分发。tasktracker在服务器B C D上,负责subjob的执行mapreduce。

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

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

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

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

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

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

    
     2
  • 杰之7
    2019-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
  • Wiggle Wiggle
    2019-02-01
    在service中使用的是dao的接口,接口规定了一类dao所要实现的功能,比如crud操作。crud操作的实现由具体的dao类实现,具体实现可能会因为数据库的改变而改变,但任何改变都不会影响service
    
     1
  • tom
    2019-01-17
    依赖倒转原则还是不太清楚,service层抽象通用的crud操作,在crud方法中调用基类dao的方法,这个符合依赖倒转原则吗?

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

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

    作者回复: 是的

     1
     1
我们在线,来聊聊吧