一、消失的概念与新鲜的名词

  Hadoop V2相对于Hadoop V1的变化主要在于资源管理和任务调度,计算模型仍然保持map/reduce的模型。资源管理和任务调度的变化导致了工作流程的变化,一些概念消失而一些概念又出现。  

  1、JobTrack与TaskTrack

  JobTrack和TaskTrack在Hadoop旧版本(Hadoop0.x及Hadoop1.x)中是非常重要的概念。JobTrack对系统中的所有Job进行统一的管理,同时为Job分配相应的TaskTrack,还需要与所有的TaskTack通信以更新Job的任务进度和运行状况。JobTrack只有一个,尽管Hadoop V1为了降低其容错率,增加了备份JobTrack,但是其单点容错率所造成的瓶颈仍旧是不可避免的。TaskTrack运行本地任务和利用本地资源,向JobTrack报告任务状态并执行JobTrack指令。TaskTrack将任务的执行硬性划分为Map task splot和Reduce Task splot,在资源利用和任务执行上都降低了效率。

  JobTrack和TaskTrack的体系是Hadoop V1的鲜明特征,但是其缺点也随着Hadoop集群的Job数量的增加而越来越明显。并且,这种体系要求系统在更新时需要更新每一个JobClient的TaskTrack,而后又需要用户来测试新的系统是否支持原来的程序,系统维护难度增大。因此,在Hadoop V2中,JobTrack和TaskTrack的概念就消失了。

  2、资源管理器ResourceManager、应用主体ApplicationMaster和节点管理器NodeManager

  Hadoop V2将JobTrack的功能进行了拆分,从而降低其单点容错性,由此出现了资源管理器和应用主体。同时,将TaskTrack所在的JobClient的功能增强,出现了节点管理器,并且通过应用主体来链接到资源管理器。

  资源管理器对集群全局的资源进行管理,并且Hadoop V2的资源管理与Hadoop V1的资源又有所区别,主要在于Hadoop V2将内存作为了资源管理单元——资源容器——的核心因素之一。资源管理器分为调度器和应用管理器,调度器主要负责任务资源的分配和任务的调度,而应用管理器负责与应用主体进行通信,获取节点的信息并通知给调度器作为参考。

  应用主体伴随着应用而生,每一个应用都有一个应用主体。应用主体存在于节点上,与节点管理器相互协助对节点上的任务和资源进行管理。应用主体统一与应用管理器通信,但是并不是受应用管理器的管理,应用管理器只负责启动应用主体并管理其生命周期(与相应的节点管理器通信来启动应用主体)。如果一个应用的资源容器存在于不同的节点上,其应用主体还需要与其他节点上的节点管理器通信来获取相应资源容器的信息。

  节点管理器是节点上的框架管理器,获取整个节点上的资源容器状况,与调度器通信来使用资源容器,与应用管理器通信来启动应用主体。

二、Hadoop V2工作流程

  前一篇随笔已经结合源码详细的分析了Hadoop V1的工作流程,在Hadoop V2中工作流程与之有所不同,信息流主要在资源管理器(包括应用管理器和调度器)、应用主体、节点管理器和资源容器之间流动。

  图中每一步的具体功能如下:

  1:用户提交任务给资源管理器中的应用管理器,首先会由框架给此任务分配一个任务ID,然后写入HDFS用户应用缓存,再提交该应用给应用管理器。

  2:应用管理器与调度器协调获取该应用的应用主体所需要的资源容器

  3:由应用管理器启动节点管理器上的应用主体

  4:应用主体计算自身所需的资源容器数量并通知调度器

  5:调度器根据应用主体的申请和自身的资源统计,为应用主体分配适当的资源容器

  6:应用主体与资源容器所在的节点管理器通信,获取资源容器的使用权

  7:节点管理器查询自身资源容器的使用情况,启动相应的资源容器来执行任务

  8:被确定分配给应用主体的资源容器实时与应用主体通信,报告任务进度和状态

  9:应用主体将作业的执行状态反馈给用户

三、容错机制

  Hadoop V1的容错机制比较简单,即通过冗余副本解决节点宕机或随机错误。datanode上的任务块在本地存储空间和其他datanode中均存在一份副本,这样可以在任务失败或节点宕机的情况下可以重新运行或由其他节点重新启动任务。而namenode出现问题将是非常严重的错误,只能进行任务的重新运行。

  Hadoop V2的容错机制比较完善,是利用log来解决的。应用管理器是记录log的部件,它会在监督任务的Map和Reduce操作的同时记录log,标明已经完成的Map和Reduce任务,因此在节点宕机或者任务出错时只需根据log启动未完成的Map任务和Reduce任务即可。如果资源管理器出现问题,会根据ZooKeeper保存的资源管理器状态进行自我恢复。由于任务运行时主要由应用主体进行监督,所以对资源管理器的依赖度有所减小。

  Spark的容错机制与Hadoop V2的有一点类似:RDDs使用lineage来恢复出现问题的RDD,而lineage的作用就是记录粗粒度的数据转换操作,这可以为RDD的恢复提供完整的数据。

Hadoop随笔(二):Hadoop V1到Hadoop V2的主要变化的更多相关文章

  1. Hadoop随笔(一):工作流程的源码

    一.几个可能会用到的属性值 1.mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution 这两个 ...

  2. Hadoop系列(二)hadoop2.2.0伪分布式安装

    一.环境配置 安装虚拟机vmware,并在该虚拟机机中安装CentOS 6.4: 修改hostname(修改配置文件/etc/sysconfig/network中的HOSTNAME=hadoop),修 ...

  3. Hadoop MapReduce 二次排序原理及其应用

    关于二次排序主要涉及到这么几个东西: 在0.20.0 以前使用的是 setPartitionerClass setOutputkeyComparatorClass setOutputValueGrou ...

  4. hadoop系列二:HDFS文件系统的命令及JAVA客户端API

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

  5. Hadoop(二):MapReduce程序(Java)

    Java版本程序开发过程主要包含三个步骤,一是map.reduce程序开发:第二是将程序编译成JAR包:第三使用Hadoop jar命令进行任务提交. 下面拿一个具体的例子进行说明,一个简单的词频统计 ...

  6. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

    一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...

  7. hadoop(二)hadoop集群的搭建

    一.集群环境准备工作 1.修改主机名 在root 账户下 vi /etc/sysconfig/network   或者 sudo vi /etc/sysconfig/network 2.设置系统默认启 ...

  8. hadoop计算二度人脉关系推荐好友

    https://www.jianshu.com/p/8707cd015ba1 问题描述: 以下是qq好友关系,进行好友推荐,比如:老王和二狗是好友 , 二狗和春子以及花朵是好友,那么老王和花朵 或者老 ...

  9. Hadoop(二)—— HDFS

    HDFS(Hadoop Distributed File System)Hadoop分布式文件系统. 一.HDFS产生的背景 随着数据量越来越大,如果大到一台主机的磁盘都存放不下,该如何解决这个问题. ...

  10. 大数据学习笔记之Hadoop(二):HDFS文件系统

    文章目录 一 HDFS概念 1.1 概念 1.2 组成 1.3 HDFS 文件块大小 二 HFDS命令行操作 三 HDFS客户端操作 3.1 eclipse环境准备 3.1.1 jar包准备 3.2 ...

随机推荐

  1. 《Vuser虚拟用户开发》读书笔记

    学会了Vuser开发只是算了性能测试入了门.要做好性能测试还需要了解系统的功能,架构和设计测试用例. 脚本选用什么协议的依据是需要模拟的客户端与服务器之间的通信采用什么协议.与具体的开发技术并无直接的 ...

  2. 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.

    升级时提示 Connection failed. Please check your network connection and try again 修改安装目录下bin\studio.exe.vm ...

  3. 解决”不按住fun键输入的是数字,按着fun键才能输入字母”

    原来联想的“FN+NUMLK“键组合,是进行数字和字符区域的切换的. 如果当前输入的是数字,说明当前处于数字模式,按一次“FN+NUMLK“键组合即可切换到字母模式.这样就能够正常地输入字母了.

  4. [课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复)

    [课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4. ...

  5. vs2013-tfs-疑问之版本控制器路径有双引号解决办法

    问题描述: 最近项目:“****”展示交易平台 ,所以版本控制器路径为: 导致生成解决方案提示:路径有问题 解决办法: 1.直接在版本控制器重命名是不支持的,需要安装:  Visual Studio ...

  6. 制作web字体:CSS3 @font-face

    @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,另外@font- ...

  7. mac攻略(四) -- brew使用

    1.介绍 brew是一个mac新用户需要了解的必备命令,它是mac下的软件包管理软件,类似centos下的yum.ubuntu下的apt-get,免去了自己手动编译安装的不方便. 很多时候作为一个用户 ...

  8. 关于sifari兼容性的一个问题

    输入框 一个很基础的控件 结果出现了兼容性问题 在chrome ie android上页面正常 结果在Safari和IOS系统里面输入框无法输入, 点击后边框有高亮效果但是无法输入文本,问题代码如下: ...

  9. 剑指offer一:二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...

  10. hibernate中设置BigDeCimal的精度

    @Column(precision = 12, scale = 2) 在MySQL数据库中的精度为: