Hadoop1.x中的MapReduce

MapReduce作为Hadoop最核心的两个组件之一,在1.0版本中就已经存在了。它包含这么几个角色:

  • Client

    • 多数情况下Client的作用就是向服务端发送请求并返回结果。但是在MapReduce里,Client的作用可不小。
    • Client根据传入的数据参数,向HDFS的NameNode获取元数据信息,计算出Map任务的split切片信息。split跟Block有映射关系,Client可以计算出split在文件中的偏移量,再根据计算向数据移动的原则,建议JobTracker将计算程序移动到哪些主机节点。
    • Client生成计算程序的配置文件。
    • Client将程序jar包、split清单、xml配置文件上传到HDFS的目录中(10副本,避免多个Map任务读取程序文件造成瓶颈)。
    • Client调用JobTracker启动计算程序,告知计算需要的文件放在哪里。
  • JobTracker
    • 主从架构中的主节点,像HDFS中的NameNode。它有两个作用:资源管理和任务调度。
    • 从HDFS获取split清单。
    • JobTracker收到TaskTracker心跳时,记录下TaskTracker当前的资源情况,为任务调度做准备。
    • 按照计算向数据移动的原则,根据资源使用情况为任务分配离数据最近的TaskTracker。
  • TaskTracker
    • 主从架构中的从节点,像HDFS中的DataNode,相同的架构会出现在大数据技术的多个地方。
    • 为尽量实现本地计算而不需要网络传输,通常TaskTracker和HDFS的DataNode在相同主机上。
    • 与JobTracker的每次心跳时,汇报自身的资源状况。
    • 心跳时从JobTracker获取MapReduce任务。
    • 从HDFS下载计算程序相关的文件,启动MapTask/ReduceTask。

在上面的架构中,JobTracker要为所有的计算任务做调度,而且全局只有一个进程不利于水平扩展。这个架构最大的缺点是单点故障风险,另外资源和调度耦合太高,资源管理难以扩展到其他计算框架。为了解决上述问题,在Hadoop2.x中,MapReduce的资源管理被切割出来,成为一个独立的资源管理模块Yarn。

MapReduce on Yarn

为了解决MapReduce1.x中存在的问题,Hadoop2.x中增加了Yarn模块,专门用来做资源管理。

Yarn包含角色:

  • Resource Manager

    • 负责整体资源的管理
    • 在客户端发起计算任务时,选择空闲资源多的节点,通知Node Manager启动Container
  • Node Manager
    • 与Resource Manager心跳时,报告自身主机节点的资源情况
    • 接收Resource Manager的指令,启动Container
  • ApplicationMaster
    • 相当于JobTracker不带资源管理功能,只负责任务调度
  • Container
    • 可用资源的集合,执行具体的计算任务
    • 反射生成计算任务的实例

MapReduce包含角色:

  • MRClient

    • 将split切片清单、xml配置、程序jar上传到HDFS
    • 向Resource Manager发请求,申请创建AppMaster
  • MRAppMaster
    • 在Container中反射生成MRAppMaster
    • 从HDFS下载split切片清单
    • 向Resource Manager申请执行计算任务的资源
    • 向Name Manager分配的Container中调度计算任务并监控其运行状态
  • Task
    • Container反射生成计算任务的实例,执行Map/Reduce计算任务

新架构解决了MapReduce1.x中的痛点。它的任务调度进程MRAppMaster是每个客户端作业对应一个,单点故障不再是全局性的,并且MRAppMaster和Container都有失败重试的功能,分别由ResourceManager和MRAppMaster来完成重试的动作。任务调度压力也分散到不同的进程里。不同的计算框架可以共用Yarn的资源管理功能。

Yarn本身也是高可用架构,通过Zookeeper选主,架构如下图

这个架构图是不是跟HDFS里的NameNode高可用非常像?可以看到主备高可用的方案都是相似的,可以说是形成了一种设计模式。

这个图比NameNode少了ZKFS这个角色,不是说它不需要了,而是它更方便地集成到ResourceManager中去了。

大数据学习(05)——MapReduce/Yarn架构的更多相关文章

  1. 大数据学习笔记1-大数据处理架构Hadoop

    Hadoop:一个开源的.可运行于大规模集群上的分布式计算平台.实现了MapReduce计算模型和分布式文件系统HDFS等功能,方便用户轻松编写分布式并行程序. Hadoop生态系统: HDFS:Ha ...

  2. 大数据学习--day16(集合总体架构--ArrayList--LinkedList)

    集合总体架构--ArrayList--LinkedList Collection接口的实现类用法上都有相似的方法.Map同理. List: 特性 :      1. 有索引     2. 有序     ...

  3. 大数据学习路线,来qun里分享干货,

    一.Linux lucene: 全文检索引擎的架构 solr: 基于lucene的全文搜索服务器,实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面. 推荐一个大数据学习群 ...

  4. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  5. 大数据学习之Hadoop快速入门

    1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效 ...

  6. 大数据学习(一) | 初识 Hadoop

    作者: seriouszyx 首发地址:https://seriouszyx.top/ 代码均可在 Github 上找到(求Star) 最近想要了解一些前沿技术,不能一门心思眼中只有 web,因为我目 ...

  7. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  8. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  9. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  10. 大数据学习系列之—HBASE

    hadoop生态系统 zookeeper负责协调 hbase必须依赖zookeeper flume 日志工具 sqoop 负责 hdfs dbms 数据转换 数据到关系型数据库转换 大数据学习群119 ...

随机推荐

  1. JAVA并行程序基础二

    JAVA并行程序基础二 线程组 当一个系统中,如果线程较多并且功能分配比较明确,可以将相同功能的线程放入同一个线程组里. activeCount()可获得活动线程的总数,由于线程是动态的只能获取一个估 ...

  2. 08-ADMM算法

    08-ADMM算法 目录 一.ADMM 算法动机 二.对偶问题 三.对偶上升法 四.对偶分割 五.乘子法(增广拉格朗日函数) 5.1 步长为 $\rho$ 的好处 六.ADMM算法 6.1 ADMM ...

  3. Redis在linux系统中的优化

    通常来看,Redis开发和运维人员更加关注的是Redis本身的一些配置优化,例如AOF和RDB的配置优化.数据结构的配置优化等,但是对于操作系统是否需要针对Redis做一些配置优化不甚了解或者不太关心 ...

  4. 关于WLS2中Ubuntu启用SSH远程登录功能,基于Xshell登录,支持Root

    背景介绍 虽然WSL2提供了非常便利的访问Ubuntu目录的形式,但是仍然我们需要通过一个工具,比如XSHELL来实现对Ubuntu的SSH登录. 获取并安装Xshell 7 目前Xshell已经更新 ...

  5. BFS经典面试题——C++版

    文章目录 蛇梯棋 单词接龙 青蛙过河 蛇梯棋 N x N 的棋盘 board 上,按从 1 到 N*N 的数字给方格编号,编号 从左下角开始,每一行交替方向. 例如,一块 6 x 6 大小的棋盘,编号 ...

  6. Pandas高级教程之:plot画图详解

    目录 简介 基础画图 其他图像 bar stacked bar barh Histograms box Area Scatter Hexagonal bin Pie 在画图中处理NaN数据 其他作图工 ...

  7. HDU 4821 2013长春现场赛hash

    题意: 一个字符串S  问其中有几个子串能满足以下条件: 1.长度为M*L 2.可以被分成M个L长的小串  每个串都不一样 分析: hash方法,一个种子base,打表出nbase[i]表示base的 ...

  8. Vue Element-ui表单校验规则,你掌握了哪些?

    1.前言   Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的.   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则. ...

  9. nohup &的用法、进程查看以及终止

    p.p1 { margin: 0 0 2px; font: 16px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Hel ...

  10. K8S(Kubernetes)学习笔记

    Kubernetes(k8s)是google提供的开源的容器集群管理系统,在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理 ...