hadoop 1.x 架构

MRv1中各角色的作用:

JobTracker:

  • 核心,主,单点
  • 调度所有的作业
  • 监控整个集群的资源负载

TaskTracker:

  • 从,自身节点资源管理
  • 和JobTracker心跳,汇报资源,获取Task

Client:

  • 作业为单位
  • 规划作业计算分布
  • 提交作业资源到HDFS
  • 最终提交作业到JobTracker

Job Tracker和Task Tracker是MR框架的长服务。Job Tracker干的事情就是:调度作业 & 资源使用情况的管理

Client做了两件事:

  • 1.根据路径计算文件切片清单,同时取出切片对block的位置信息
    核心:切片清单是很重要的,计算向数据移动,getfileblocklocations得到文件所有的块,得到位置信息。有了文件,就可以并行计算。jar包+切片清单+配置信息,作为分布式计算的资源
  • 2.资源上传到hdfs

Client做完这两件事,告诉Job Tracker我这要作业要跑,你给调度一下。Job Tracker优先从HDFS拿回清单文件、参考资源、调度任务。最终Task Tracker通过3s心跳询问到Job Tracker有没有任务要做。之后Task Tracker就知道做哪个任务(里面有jar包、路径)。下载jar包到本地,开jvm跑Map Task或者Reduce Task。

MRv1的架构中,存在着很大的弊端:

  • JobTracker:负载过重,单点故障
  • 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
  • 不同框架对资源不能全局管理

Hadoop 2.x架构


Hadoop 2.x架构中最大的改变,就是引入了YARN(Yet Another Resource Negotiator)。从MRv1进化到MRv2,就是引入了资源管理系统。核心思想就是将Job Tracker的两大功能(任务调度、资源管理)拆开,“分权”给ResourceManager和ApplicationMaster。使RM负责整个集群的资源管理,使ApplicationMaster负责任务调度

同时,YARN的引入,使得多个计算框架可以运行在同一个集群中(MapReduce、Spark、Storm等),每个应用程序对应一个ApplicationMaster。

MRv2中各角色的作用:

YARN:解耦资源与计算

  • 1.ResourceManager

    • 主,核心
    • 集群节点资源管理
  • 2.NodeManager
    • 与RM汇报资源
    • 管理Container生命周期
    • 计算框架中的角色都以Container表示
  • 3.Container:【节点NM,CPU,MEM,I/O大小,启动命令】
    • 默认NodeManager启动线程监控Container大小,超出申请资源额度,kill
    • 支持Linux内核的Cgroup
  • 3.MR :
    • MR-ApplicationMaster-Container

      • 作业为单位,避免单点故障,负载到不同的节点
      • 创建Task需要和RM申请资源(Container)
    • Task-Container
  • 4.Client:
    • RM-Client:请求资源创建AM
    • AM-Client:与AM交互

Client将写好的程序打成jar包,上传给ResourceManager(后面统称为“RM”)。RM监控着所有NodeManager的资源情况(内存、CPU、磁盘io等),因此RM就知道哪个NodeManager(后面统称为“NM”,和DataNode站在一起的。NodeManager和RM做心跳,NodeManager负责统计本节点资源情况并汇报给RM。如此,RM就能采集到整个集群的资源使用情况了)是空闲的。

假设NodeManager2的资源是足够的,RM就会在NM2上创建一个Application Master进程(调度功能,因为它“不忙”,所以才挑选它)。然后NM2中的ApplicationMaster进程运行jar包程序,就知道要对哪个数据进行计算。既然拥有调度功能,就可以从HDFS拿回切片清单。

ApplicationMaster进程首先对数据切片,假如切5个片段,app mstr就会根据切片的位置信息,去RM申请5个map任务的资源(App Mstr对RM说:我这可能有xx个map任务、xx个reduce任务要跑,你根据你的资源情况,给我分配一下看看在哪跑比较合适)。

RM按照就近原则(也就是优先分配数据所在节点的资源),比如AppMstr有3个map任务要跑,RM就会根据实际情况返回3个combiner容器,并告诉AppMstr你就让3个map任务在这3个combiner容器里面跑就行了。app mstr收到通知后,就会通知各个combiner容器对应所在的NodeManager启动Combiner。combiner启动成功后会向AppMstr注册,然后AppMstr根据曾经RM下达的命令,将几个map任务放在combiner中去跑了。之后,combiner中就会启动YarnChild进程,YarnChild进程就会创建对应的MapTask线程来跑map任务了。

当所有map任务跑完了,就申请reduce任务的资源(按照就近原则、资源空闲原则)。

就近原则带来的好处,就是数据没有移动,避免了大量IO。如果想充分利用就近原则,就尽可能多的设置副本数。

总结:

将MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTracker构建的MRv1系统中。

基本功能模块:

  • YARN:负责资源管理和调度
  • MRAppMaster:负责任务切分、任务调度、任务监控和容错等
  • MapTask/ReduceTask:任务驱动引擎,与MRv1一致

每个MapRduce作业对应一个MRAppMaster

  • MRAppMaster任务调度
  • YARN将资源分配给MRAppMaster
  • MRAppMaster进一步将资源分配给内部的任务

MRAppMaster容错

  • 失败后,由YARN重新启动
    *任务失败后,MRAppMaster重新申请资源

Hadoop架构-YARN相关推荐

  1. Hadoop之Yarn面试知识复习

    Hadoop之Yarn面试知识复习 目录 简述hadoop1与hadoop2 的架构异同 为什么会产生 yarn,它解决了什么问题,有什么优势? Hadoop之Yarn工作机制详解 HDFS的数据压缩 ...

  2. Hadoop之Yarn工作机制详解

    Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...

  3. Hadoop体系结构– YARN,HDFS和MapReduce

    Before reading this post, please go through my previous post at "Hadoop 1.x: Architecture and H ...

  4. Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)

    文章目录 大数据的简介 Hadoop框架 Hadoop的优缺点 Hadoop1.x和2.x的版本区别 Hadoop架构 Hadoop目录结构 正常工作的Hadoop集群中Hadoop都分别需要启动哪些 ...

  5. Hadoop之Yarn

    目录     1 Hadoop1.x和Hadoop2.x架构区别     2 Yarn概述     3 Yarn基本架构     4 Yarn工作机制     5 作业提交全过程     6 资源调度 ...

  6. Hadoop运维工程师专家之路--第二章Hadoop架构简介

    第二章Hadoop架构简介 本章包括 l  Hadoop架构 l  分布式集群 l  HDFS架构 l  YARN架构 本章介绍Hadoop架构.在你学习管理Hadoop集群之前,有必要先了解下Had ...

  7. Hadoop系列文章 Hadoop架构、原理、特性简述

    Hadoop系列文章 Hadoop架构.原理.特性简述 Hadoop HDFS HDFS介绍 HDFS架构图 HDFS写入数据流程图 HDFS读取数据流程图 数据块的副本集 Hadoop YARN Y ...

  8. linux hadoop 关系,最全hadoop架构总结

    最全hadoop架构总结一.什么是Hadoop?它包含哪些模块? ① Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构: ②主要解决,海量数据的存储和海量数据的分析计算问题. ③ ...

  9. MPP架构与Hadoop架构是一回事吗?

    计算机领域的很多概念都存在一些传播上的"谬误". MPP这个概念就是其中之一.它的"谬误"之处在于,明明叫做"Massively Parallel P ...

最新文章

  1. PyTorch中如何使用tensorboard可视化
  2. 第12章 存储器的保护
  3. Python 卸载python
  4. 修改 Chrome浏览器主页被劫持 chrome 主页被篡改成hao.qquu8.com的解决方案
  5. CCF201612-5 卡牌游戏(募集解题代码)
  6. java map 教程_Map和Set
  7. Windows中的磁盘分区、MBR、GPT
  8. Atitit gui的实现模式文本 dom ast 像素绘图api native 目录 1. Pl ast xml domAst 1 1.1. 简介 1 1.1.1. 【具体语法树】 2 2.
  9. array在java_在Java中的ArrayLists之间进行转换
  10. oracle sql详细教程下载,Oracle SQL 实用基础教程 PPT
  11. 特征选择算法之ReliefF算法python实现
  12. Android Native Crash的log分析和定位
  13. logback分环境配置
  14. android程序设计学习,android编程入门很简单 android编程入门自学
  15. 干活,分享!!三套简单有趣的后台登录页面模板分享
  16. [Bullet3]常见物体和初始化
  17. 新购电脑已装显卡,但控制面板里找不到“NVIDIA 控制面板”怎么办?
  18. 利用资源文件实现对软件的保护
  19. 微x模块怎么导入主题_WESHOP | 基于微服务的小程序商城系统
  20. 编译原理:语法制导翻译

热门文章

  1. 蓝桥杯 密文搜索(全排列)
  2. 探究Java虚拟机栈
  3. 【Leetcode】刷题的开始
  4. System center 2012 R2 实战十、妙用SCO+SCOM实现声音告警
  5. WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
  6. 【BZOJ】4430: [Nwerc2015]Guessing Camels赌骆驼
  7. i386平台和x86-64平台机器代码的区别
  8. XHProf的安装和使用(PHP性能测试神器)
  9. MVC5+EF6 入门完整教程七
  10. JS中定义式函数与变量时函数的差别