Hadoop随笔(二):Hadoop V1到Hadoop V2的主要变化
一、消失的概念与新鲜的名词
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的主要变化的更多相关文章
- Hadoop随笔(一):工作流程的源码
一.几个可能会用到的属性值 1.mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution 这两个 ...
- Hadoop系列(二)hadoop2.2.0伪分布式安装
一.环境配置 安装虚拟机vmware,并在该虚拟机机中安装CentOS 6.4: 修改hostname(修改配置文件/etc/sysconfig/network中的HOSTNAME=hadoop),修 ...
- Hadoop MapReduce 二次排序原理及其应用
关于二次排序主要涉及到这么几个东西: 在0.20.0 以前使用的是 setPartitionerClass setOutputkeyComparatorClass setOutputValueGrou ...
- hadoop系列二:HDFS文件系统的命令及JAVA客户端API
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- Hadoop(二):MapReduce程序(Java)
Java版本程序开发过程主要包含三个步骤,一是map.reduce程序开发:第二是将程序编译成JAR包:第三使用Hadoop jar命令进行任务提交. 下面拿一个具体的例子进行说明,一个简单的词频统计 ...
- Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群
一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1 准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...
- hadoop(二)hadoop集群的搭建
一.集群环境准备工作 1.修改主机名 在root 账户下 vi /etc/sysconfig/network 或者 sudo vi /etc/sysconfig/network 2.设置系统默认启 ...
- hadoop计算二度人脉关系推荐好友
https://www.jianshu.com/p/8707cd015ba1 问题描述: 以下是qq好友关系,进行好友推荐,比如:老王和二狗是好友 , 二狗和春子以及花朵是好友,那么老王和花朵 或者老 ...
- Hadoop(二)—— HDFS
HDFS(Hadoop Distributed File System)Hadoop分布式文件系统. 一.HDFS产生的背景 随着数据量越来越大,如果大到一台主机的磁盘都存放不下,该如何解决这个问题. ...
- 大数据学习笔记之Hadoop(二):HDFS文件系统
文章目录 一 HDFS概念 1.1 概念 1.2 组成 1.3 HDFS 文件块大小 二 HFDS命令行操作 三 HDFS客户端操作 3.1 eclipse环境准备 3.1.1 jar包准备 3.2 ...
随机推荐
- IOS调试lldb命令常用,po,
lldb命令常用(备忘) 假如你准备在模拟器里面运行这个,你可以在"(lldb)"提示的后面输入下面的: (lldb) po $eax LLDB在xcode4.3或者之后的版本里面 ...
- gulp watch error ENOSPC
in linux you fix this with the command:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sy ...
- WIN10 安装不了NET3.5
第一步,挂载或插入安装光盘.在sources\sxs文件夹中会有一个“microsoft-windows-netfx3-ondemand-package.cab”文件.Win+X,以管理员权限启动命令 ...
- 从零开始学iPhone开发(5)——使用MapKit
(转)Leonbao:MapKit学习笔记 1.概述插入MapView,设置Delegate(一般为Controller),Annotations记录兴趣位置点(AnnotationView用来显示兴 ...
- centos7 gitlab
yum -y update chmod +x /etc/rc.d/rc.local vi /etc/selinux/config SELINUX=disabled reboot vi /etc/hos ...
- 《BI那点儿事》数据流转换——模糊分组转换
在模糊查找中我们提到脏数据是怎样进入到表中的事情,主要还是由于一些“Lazy-add”造成的.这种情况我们的肉眼很容易被欺骗,看上去是同一个单词,其实就差那么一个字母,变成了两个不同的单词.一个简单的 ...
- JS中先有Object还是先有Function?
一张图:
- 【转载】CSS 伪类-:before和:after
:before和:after的作用就是在指定的元素内容(而不是元素本身)之前或者之后插入一个包含content属性指定内容的行内元素,最基本的用法如下: #example:before { conte ...
- 各种效果的tab选项卡
;(function($){ $.fn.tabso=function( options ){ var opts=$.extend({},$.fn.tabso.defaults,options ); r ...
- python核心编程第六章练习6-12
6-12.字符串.(a)创建一个名字为findchr()的函数,函数声明如下.def findchr(string, char)findchr()要在字符串string中查找字符char,找到就返回该 ...