一、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. Linux 下测试磁盘读写 I/O 速度的方法汇总

    在分布式异构存储系统中,我们经常会需要测量获取不同节点中硬盘/磁盘的读写 I/O 速度,下面是 Linux 系统下一些常用测试方法(之后不定期更新): 1.使用 hdparm 命令这是一个是用来获取A ...

  2. oracle禁止插入、延迟插入方法

    DATE_ADD(DATE_ADD(curdate(),INTERVAL +6 HOUR),INTERVAL +6 DAY) mysql取当前日期后6天,截止到6点钟的方法 --直接报错 CREATE ...

  3. koa2 从入门到进阶之路 (一)

    首先我们先来了解一下 Koa 是什么,https://koa.bootcss.com/,这是 Koa 的官方网站,映入眼帘的第一句就是 Koa -- 基于 Node.js 平台的下一代 web 开发框 ...

  4. codevs——2152 滑雪

    2152 滑雪  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场 ...

  5. HDFS api操作

    import java.net.URI;import java.util.Iterator;import java.util.Map.Entry; import org.apache.hadoop.c ...

  6. gorm 结构体 预加载

    结构体构建 type PlansApproval struct {     ID uint     Plans_Id int //plans编号     UpdateUser int //更新者    ...

  7. 深入GCD(五):资源竞争

    概述我将分四步来带大家研究研究程序的并发计算.第一步是基本的串行程序,然后使用GCD把它并行计算化.如果你想顺着步骤来尝试这些程序的话,可以下载源码.注意,别运行imagegcd2.m,这是个反面教材 ...

  8. Python爬虫之简单的图片获取

    简单的静态网页的图片获取: import urllib import re import os url = 'http://www.toutiao.com/a6467889113046450702/' ...

  9. C++常用字符串分割方法

    一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串, ...

  10. html+vlc 播放多视频

    html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...