`
younglibin
  • 浏览: 1193217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop1.0 和hadoop2.0 任务处理架构比较

 
阅读更多

 

刚刚看到一篇文章对 hadoop1 和 hadoop  2  做了一个解释 图片不错 拿来看看


 

 Hadoop 1.0



 

 

从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:

  1. 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。
  2. TaskTracker 是 Map-reduce 集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。
  3. TaskTracker 同时监视当前机器的 tasks 运行状况。TaskTracker 需要把这些信息通过 heartbeat 发送给 JobTracker,JobTracker 会搜集这些信息以给新提交的 job 分配运行在哪些机器上。上图虚线箭头就是表示消息的发送 - 接收的过程。

可以看得出原来的 map-reduce 架构是简单明了的,在最初推出的几年,也得到了众多的成功案例,获得业界广泛的支持和肯定,但随着分布式系统集群的规模和其工作负荷的增长,原框架的问题逐渐浮出水面,主要的问题集中如下:

  1. JobTracker 是 Map-reduce 的集中处理点,存在单点故障。
  2. JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
  3. 在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
  4. 在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
  5. 源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度。
  6. 从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。

 

 hadoop2.0:



 从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce 的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷。在过去的几年中,hadoop 开发团队做了一些 bug 的修复,但是最近这些修复的成本越来越高,这表明对原框架做出改变的难度越来越大。

为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 MapReduce 框架完全重构,发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn,

 

重构根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。一个应用程序无非是一个单独的传统的 MapReduce 任务或者是一个 DAG( 有向无环图 ) 任务。ResourceManager 和每一台机器的节点管理服务器能够管理用户在那台机器上的进程并能对计算进行组织。

事实上,每一个应用的 ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。

上图中 ResourceManager 支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,它在执行过程中不对应用进行监控和状态跟踪。同样,它也不能重启因应用失败或者硬件错误而运行失败的任务。

ResourceManager 是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。资源包括:内存,CPU,磁盘,网络等等。可以看出,这同现 Mapreduce 固定类型的资源使用模型有显著区别,它给集群的使用带来负面的影响。资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序。调度插件可以基于现有的能力调度和公平调度模型。

上图中 NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器汇报。

每一个应用的 ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。

 

详细配置参考:

http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

  • 大小: 129.4 KB
  • 大小: 32.7 KB
  • 大小: 23.5 KB
分享到:
评论

相关推荐

    详解hadoop

    详解hadoop Hadoop1.0架构 Hadoop1.0编程 Hadoop1.0弊端 Hadoop2.0架构 Hadoop2.0编程 Hadoop2.0部署

    大数据处理--hadoop2.0核心架构技术

    大数据处理--hadoop2.0核心架构技术,主要介绍了大数据面临的挑战,而hadoop正是解决这些挑战的重要技术,接着分别介绍了hadoop1.0和hadoop2.0的区别,进而重点讲到hadoop2.0 YARN,详细分析MapReduce及HDFS架构。

    细解Hadoop

    Hadoop 分布式文件系统 在Hadoop1.0中,由于MapReduce模块的主服务(Jobtracker)任务太多,当集群中MR任务非常多时,会造成大量内存开销,甚至是主服务失败,一开始还可以通过修修补补解决问题,但由于架构上的缺陷...

    大数据分析技术基础教学课件3-大数据处理平台Hadoop.pptx

    Apache Hadoop 版本演变 Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0 第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,...

    Hadoop MapReduce架构

    Hadoop MapReduce 是 Hadoop 平台根据 MapReduce 原理实现的计算框架,目前已经实现了两个版本,MapReduce 1.0 和基于 YARN 结构的 MapReduce 2.0。 尽管 MapReduce 1.0 中存在一些问题,但是整体架构比较清晰,更...

    BigDataLearning

    Hadoop进阶地址:1 第一章 概述hadoop的体系架构块:DataNode:NameNode:Secondary NameNode:Hadoop1.X架构图Hadoop 2.Xhadoop2.0以后版本移除了jobtracker tasktracker,改由Yarn平台的resourcemanager负责统一...

    EasyMR并行架构技术源码 v1.0

    一、源码特点1、简单易用:(1)部署实施简单整个框架是基于.NET Framework2.0开发,绿色不需要任何安装和复杂配置,相对与Hadoop简直可以用轻松来形容,可以让任何一个程序员或者IT短时间内快速搭建起属于自己的并行...

    【推荐】最强大数据学习与最佳实践资料合集(基础+架构+数仓+治理+案例)(100份).zip

    Hadoop精选面试题和MapReduce编程企业级编程实践 HDFS-part2-原理详解 HDFS核心内容及命令-2020 hive安装 hive语法和常用函数 Kafka安装 kylin安装 mapreduce调优指南 sqoop安装 二、架构篇 Flink-1.11 Hive集成与...

    大数据与人工智能-fy.docx

    1Hadoop目前最新的版本是 [单选题] A.1.0 B.2.0 C.3.0(正确答案) D.4.0 2. 2以下哪个系统可以为计算机CPU分配资源 [单选题] A.分布式文件存储系统(HDFS) B.分布式计算框架(MapReduce) C.分布式资源调度系统...

    SparkInternals:有关Apache Spark设计和实现的说明

    此外,在设计和实现方面与Hadoop MapReduce进行了一些比较。 我不愿意将此文档称为“代码演练”,因为目标不是分析项目中的每段代码,而是以系统的方式了解整个系统(通过分析Spark作业的执行过程,从创建到完成)...

Global site tag (gtag.js) - Google Analytics