在MRv1中,各个模块间驱动运行的方式是函数调用的方式。这是同步的过程,上一模块调用下一模块函数后,等待其执行。效率不高。

在MRv2中做了改进,yarn基于事件驱动的并发模型。在详细介绍前,先看下图:

处理请求会作为事件进入系统,有中央异步调度器【AsyncDispatcher】传递给对应的事件调度器【Event Handler】。事件调度器再将该时间转发给另外的事件调度器或者交给一个带有有限状态机的事件处理器,其处理结果也以事件形式输出给中央异步调度器。

在yarn中,核心服务都是一个中央异步调度器。ResourceManager,NodeManager,MRAPPMaster等。

以MRAPPMaster为例,内部实现了中央异步调度器,

各种事件调度器是在中央调度其中定义、实现、注册。(在中央调度器初始化后,再new几个对象,各个对象都是一个特定定义的具体事件调度器,而这些事件调度器里,实现了最终的调度事件处理器的方法)

而TaskAttemptImpl、TaskImpl、JobImpl这一系列是事件处理器。

Hadoop总结篇之五---模块间是怎么驱动执行的的更多相关文章

  1. Hadoop总结篇之一------开篇

    从今天开始新的系列:Hadoop总结篇 之前的hadoop学习篇由于是学习过程中随手记下来的一些内容,不具有系统性.所以在这个系列中,将凭着这段时间的研究心得,来记录一些自认为比较重要的东西. 本系列 ...

  2. 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享

    http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五  模块(菜单)管理源码分享    在上四篇文章 ...

  3. Prism for WPF再探(基于Prism事件的模块间通信)

    上篇博文链接 Prism for WPF初探(构建简单的模块化开发框架) 一.简单介绍: 在上一篇博文中初步搭建了Prism框架的各个模块,但那只是搭建了一个空壳,里面的内容基本是空的,在这一篇我将实 ...

  4. Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)

    这一篇主要是学习python里面的模块,篇幅可能会比较长 模块的概念:在Python中,一个.py文件就称之为一个模块(Module). 模块一共三种: python标准库 第三方模块 应用程序自定义 ...

  5. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  6. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言                                  我们一起从3个小例子来体验一下linux内核编程.如下: 1.内核编程之hello world 2.模块参数传递 3.模块间 ...

  7. JS模块间错误隔离

    问题背景: 页面中有多个功能模块,怎么在一个模块出了问题之后,保证其它模块的正常工作. 上面的差不多就是面试官的原话了,姑且称之为模块间错误隔离问题 第一反应是动态按需加载代码,用户操作发生后再加载对 ...

  8. Hadoop学习总结之五:Hadoop的运行痕迹

    Hadoop学习总结之五:Hadoop的运行痕迹   Hadoop 学习总结之一:HDFS简介 Hadoop学习总结之二:HDFS读写过程解析 Hadoop学习总结之三:Map-Reduce入门 Ha ...

  9. Python 中模块间全局变量的使用上的注意

    最近用Python写代码,需要用到模块间的全局变量. 网上四处搜索,发现普遍做法是把全局变量放到一个独立的模块中,使用时,导入此全局变量模块即可. 但是在实际使用过程中发现了些小问题:在使用如下代码导 ...

随机推荐

  1. Android开源益智游戏“斗地主”单机版源代码

     Android开源益智游戏"斗地主"单机版源代码 这是一个网上流传的Android开源斗地主单机版项目,运行结果如图: 项目源代码导入到Eclipse后可直接运行,我把ecl ...

  2. GCD: 基本概念和Dispatch Queue 【转】

    什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允 ...

  3. Cocos2dx对精灵的优化

    cocos2dx针对游戏设计的不同方面会有不同的优化方案,可以对声音,对内存,对图片格式,对色彩等等进行优化.有关这些方面的方法请大家查找其他的文章.我今天要说的是如何对精灵进行优化,程序中我们用到的 ...

  4. maven - dependencies与dependencyManagement的区别

    1.DepencyManagement应用场景 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行 ...

  5. Servlet3.0 jsp跳转到Servlet 出现404错误的路径设置方法

    最近又遇到了这种问题,百度了好久,发现有人说要在action的路径里面写Servlet文件的绝对路径,比如说,单独打开servlet的地址为http://localhost:8080/TomcatTe ...

  6. 在 2016 年学 JavaScript 是一种什么样的体验?

    转 译者:方应杭 嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化.听说你是这里对新技术最了解的 Web 开发工程师? 准确地说,我 ...

  7. 【转】以 java 为例,总结下 appium 里的一方法的使用心得

    转自:http://testerhome.com/topics/1043 1.关于没有name,没有ID的元素的定位---通用篇解题思路:因为没有name,id:其实剩下的选择已不多,要么xpath, ...

  8. 返回顶部demo

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  9. SPARK SQL 中registerTempTable与saveAsTable的区别

    使用registerTempTable注册表是一个临时表,生命周期只在所定义的sqlContext或hiveContext实例之中.换而言之,在一个sqlontext(或hiveContext)中re ...

  10. cache manifest 格式

    下面说明书写 cache manifest 文件需要遵循的格式.1 首行必须是 CACHE MANIFEST.2 其后,每一行列出一个需要缓存的资源文件名.3 可根据需要列出在线访问的白名单.白名单中 ...