一、MRv1

  Master - Slave 模式

  存在JobTracker单点失败的问题,在YARN得到了解决。

  

主要包含4部分:JobTracker,TaskTracker,Task,Client

  JobTracker:负责整个MR集群的资源监控和作业调度,集群的Master。它把任务进度 和 资源使用量告诉调度器TaskScheduler,由调度器来计划如何调度,调度器是个可挺拔模块。

  TaskTracker:负责周期性的向JobTracker汇报每个节点的状况,并执行JobTracker发来的命令。TaskTracker使用slot来等量划分节点上的资源(CPU和内存),slot分为map slot 和 reduce slot两种,分别提供给map task 和 reduce task使用。

  Task:分为MapTask 和 ReduceTask两种,由TaskTracker启动。通常一个Task只使用一个slot,但也可使用多个。

作业提交过程:

  

  1、首先在客户端启动作业;

  2、向JobTracker请求一个Job ID;

  3、接着将运行作业所需要的资源文件复制到HDFS上,主要是作业的jar包、配置信息、输入划分等;这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件名为作业ID。Jar默认有10个副本,输入划分告诉JobTracker有多少个map任务等信息。

  4、之后客户端会再向JobTracker正式提交作业,JobTracker会将作业放在一个作业队列中,等待调度。当调度到这个作业时,会先根据划分信息为每个split创建一个map任务,并交给TaskTracker来执行。

  5、TaskTracker会每隔一段时间会给JobTracker汇报作业的进度状况。当最后一个任务完成时,便把该作业置为成功,并反馈给客户端。

二、MRv2-Yarn

  通用的资源管理系统。
  Master(RM) - Slave(NM) 模式
  主要解决MRv1的扩展问题;是一般化的管理平台,MR,Spark等都可以在Yarn上运行;

  把资源管理 和 应用程序管理 剥离出来;划分为两个独立的守护进程,管理集群的资源使用 和 管理运行任务的生命周期。

  

  主要由4个部分组成:

    ResourceManager:控制整个集群 并 管理应用程序向基础计算资源的分配。将各个资源部分(cpu,内存,带宽等)分配到各个NodeManager;与AM一起分配资源;与NM一起启动并监视它们的应用程序;MRv1中的JobTracker;

    ApplicationManager:管理一个在YARN中运行的应用程序的实例;负责协调来自RM的资源分配;与NM一起监视容器的执行和资源的使用。MRv1中的TaskTracker

    NodeManager:管理YARN集群中的节点,监视一个容器的状态和节点资源使用。

    Container:YARN中资源的抽象(cpu,内存,网络等),每个任务的执行都放在一个Container里。

  作业运作流程:

    

三、任务调度算法

  1、先入先出FIFO:Hadoop 中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。

  1、公平调度:是指一个用户作业池中的Job公平地调度,尽可能保证每个Job所有均等的处理时间;可设置每个用户池间的权重(不会因为提交作业多而占更多的资源),动态自适应性。每个用户作业池中有多个作业同时运行。

  2、容量池调度:是指限制每个用户的作业队列能使用的资源量,每上队列中使用FIFO调度,静态调度。每个用户作业队列中只有一个作业运行。

MapReduce中作业调度机制

Hadoop MapReduce两种架构 以及 YARN的更多相关文章

  1. 基于两种架构的ETL实现及ETL工具选型策略

    企业信息化建设过程中,业务系统各自为政.相互独立造成的"数据孤岛"现象尤为普遍,业务不集成.流程不互通.数据不共享--.这给企业进行数据的分析利用.报表开发等带来了巨大困难.在此情 ...

  2. smaller programs should improve performance RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构 区别示例

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In this section, we l ...

  3. JavaWeb前置知识 : 动态和静态的区别、两种架构、常见状态码

    JavaWeb程序设计(一) : 前置知识 1.动态网页与静态网页的区别: a.不要和是否有"动感"混为一谈. b.是否随着时间.地点.用户操作的改变而改变 (例如 : 在百度上搜 ...

  4. 下一代Apache Hadoop MapReduce框架的架构

    背景 随着集群规模和负载增加,MapReduce JobTracker在内存消耗,线程模型和扩展性/可靠性/性能方面暴露出了缺点,为此需要对它进行大整修. 需求 当我们对Hadoop MapReduc ...

  5. 你知道C/S和B/S两种架构有什么区别吗?

    C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构     ...

  6. C/S和B/S两种架构区别与优缺点分析

    C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. ...

  7. ETL的两种架构——ETL架构和ELT架构优劣势对比

    ​ 导读: 作为现代企业和组织机构的重要资源,信息是进行科学管理与决策分析的基础.ETL 则是把数据转换为信息.知识的关键步骤之一.在 AI 应用场景下,数据集成有哪些特点?随着 AI 应用场景越来越 ...

  8. ETL的两种架构(ETL架构和ELT架构)

     ETL ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.ETL一词 ...

  9. MapReduce两种执行环境介绍:本地测试环境,服务器环境

    本地测试环境(windows):1.在windows下配置hadoop的环境变量2.拷贝debug工具(winutils.exe)到hadoop目录中的bin目录,注意winutils.exe的版本要 ...

随机推荐

  1. 记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure]

    今天早上打包一直都没有问题,突然有一次打包突然出现异常现象,如下: ERROR: Exception when publishing, exception message [Failure] Buil ...

  2. cf487C Prefix Product Sequence

    Consider a sequence [a1, a2, ... , an]. Define its prefix product sequence . Now given n, find a per ...

  3. miller_rabin + pollard_rho模版

    #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #incl ...

  4. EC++学习笔记(六) 继承和面向对象设计

    条款32:确定你的 public 继承塑模出 is-a 关系 public inheritance 意味着 is-a 关系class Derived 以 public 形式继承 class Base, ...

  5. Laravel 报500错误

    Laravel报500错误 发生情境: 使用Composer安装Laravel5.1版本到本地wamp环境,可以成功访问框架首页,然后上传到服务器上,报500错误. 解决: (1)在首页public/ ...

  6. 微服务网关实战——Spring Cloud Gateway

    导读 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用.本文对Spring Clou ...

  7. IO重定向

    http://tldp.org/LDP/abs/html/io-redirection.html http://mp.weixin.qq.com/s/JMHDutEG4R0hEaXrYPmCGg 每个 ...

  8. mysql批量删除相同前缀的表格

    原文:http://www.open-open.com/code/view/1446691883076 如果你网站后台没法运行mysql,就进phpmyadmin,然后运行一段代码.假如要删除织梦cm ...

  9. 基于centos 创建stress镜像——源码安装stress

    上一篇文章进行了yum安装stress,这次对stress进行源码编译安装,并且生成新的镜像 创建Dockerfile目录 [vagrant@localhost ~]$ mkdir -p /tmp/s ...

  10. Go -- 并发编程的两种限速方法

    引子 golang提供了goroutine快速实现并发编程,在实际环境中,如果goroutine中的代码要消耗大量资源时(CPU.内存.带宽等),我们就需要对程序限速,以防止goroutine将资源耗 ...