Hadoop(6)----hadoop1.x 与 hadoop2.x之间的区别

1 介绍

随着企业数据化和Hadoop的应用越加广泛,hadoop1.x的框架设计越来越无法满足人们对需求,Apache一直在对Hadoop1.x进行修改,最后退出了新一代的Hadoop2.x,下面笔者将从HDFS和MapReduce两个方面对Hadoop1.x和Hadoop2.x直接的区别

2 HDFS之间的区别

Hadoop 1.X:

在Hadoop1.x中,HDFS的采用Masters/Slaves的方式设计集群,通过NameNode和DataNode的方式管理集群。在整个Hadoop1.x HDFS中分为Namespace和BlockStorageServer两个部分。其中Namespace完全分布在NameNode节点中,Namespace其中包括了所有文件的元数据、images镜像和edits文件等。而BlockStorageServer分布则是分布在NameNode节点和Datanode节点上的,在NamNodee节点中存放了所有的Block与DataNode节点之间的对应关系。而在Block的内容数据则是在DataNode节点中分布式存放着。

                                                     

弊端:

(1)因为NameNode节点是整个集群的中心,一旦NameNode发生宕机,将会导致整个集群的瘫痪,直到NameNode被重启以后问题才被解决。

(2)NameNode节点的个数只有一个,单机的性能是有限的,并且NameNode中存放着有关DataNode节点的信息,因此在理论上无法实现横向无限性增加DataNode节点,这也就是为什么有NameNode最多支持4000个节点的由来。

Hadoop 2.X

Hadoop2.x实现联邦HDFS,即多个NameNode节点并存,并且每一个NameNode节点管理一个Namespace,我们先看下面这张图:

                                 

Block Pool:block池,一个NameNode管理的所有的block节点,一个NameNode节点和去的Pool为一个管理单元,来管理自己的Block。

在联邦HDFS中,每个Namespace都有自己的Block管理,但这些Block全部存放在整个DataNode集群中,如上图所示,Namespace之间是相互隔离的,即使一个NameNode节点宕机,也不会影响到其他NameSpace,同事也不会影响到其管理的Datanodes中的Block。

优势:

(1)可以做到自由的横向无限制扩充DataNode节点。

(2)可以实现多个NameNode并发执行任务,提高HDFS系统的吞吐量

(3)安全性得到很大的提示,单个NameNode节点的崩溃不会导致整个系统的瘫痪。

3 MapReduce之间的区别

Hadoop1.X:

Hadoop1.x运行MapReduce任务的流程为:

(1)Job Client提交任务给JobTracker(NameNode节点中),JobTracker向各个节点发出询问请求,查看每个DataNode节点中执行的Task(任务)的个数

(2)JobTrack手机DataNodes的信息,并未Job进行资源分配

(3)将MapReduce任务所需的资源、信息等全部复制到Datanodes节点中。

(4)DataNode节点接受任务后,将本地的Block读取,并形成相应的Map和Reduce任务,这些任务的管理全部由DataNodes节点中的TaskTracker进行监督。

                            该图显示了 Apache Hadoop 的经典版本 (MRv1)

从图中可知,JobTacker是整个Hadoop1.x MapReduce框架的中心,其承担的任务有:接受任务、计算资源、分配资源、与DataNode进行交流等功能。Hadoop1.x 框架在发布时收到很大的环境,但是随着需求越来越大,Hadoop1.x 的MapReduce(MapReduce v1)已经不能够胜任现在的需求,主要表现在以下几个问题:

(1)JobTracker是整个MapReduce v1的核心,存在单点故障

(2)JobTracker管理整个MapReduce作业的任务,造成资源消耗,当map/reduce task过多的时候,JobTracker将会耗费大量内存,同时也增加Job  Tracker fail的风险。

(3)JobTracker对DataNode进行资源询问室,使用的Task的个数,为考虑内存和CPU的使用率等,如果将两个大内存的Map/reduce Task放在一个节点上执行,可能会出现OOM(内存溢出)。

(4)代码层中的类有些超过3000行,导致整个类的任务不够明确,并且进行修改是任务量也巨大,因此增加了维护、开发人员进行修改的难度。

Hadoop 2.X

为了应对越来越大的需求,已经MapReduce v1的弊端,Apache对MapReduce v2进行了重新设计,出现了MapReduce v2,也就是YARN框架。下面介绍一下YARN框架。

                             

(1)ResourceManager:在MapReduce v1中,JobTracker的任务有两个:资源管理和任务调度。而在YARN框架中,将JobTracker的两个核心任务进行分离,其中的资源管理形成新的ResourceManager。ResourceManager负责管理每个NodeManager节点所提供的资源状态(内存、CPU、磁盘和带宽等传统信息)。在MapReduce任务的时候,RM会精确计算每个整个集群的资源情况,已分配给该任务合适的资源。

(2)Container:对一个节点的内存、CPU等资源的描述的整体描述。

(3)ApplicationMaster:每一个MapReduce任务都对应着一个AM,AM负责向ResourceManager索要执行任务所需要的资源容器,根据进程的状态、管理进行和处理进程失败的原因。

(4)NodeManager:是一个机器框架的代理,是任务执行的容器,其管理者节点的诸多信息:例如内存、CPU、硬盘、网络等资源。

YARN相对于MapReduce v1的优势:

(1)JobTracker所承担的庞大负担被分割,资源管理和任务调度分配在不同的节点,并且实现程序的分布化、最优化

(2)ResourceManager资源分配不再凭借slot的个数,而是根据节点的内存是分配任务,使得负载均衡更在完善

(3)ResourceManager节点上有一个ApplicationMasters进程,负责管理每个ApplicationMatser进程的状态,从而实现监督任务。

4 总结

Hadoop 2.X作为新一代的Hadoop对Hadoop 1.x进行了框架的重新设计,使得Hadoop框架更加具体化,并且框架的改变也解决了显示生活中的一些问题。随着Hadoop的不断普及,Hadoop 2.x也逐渐成熟,大家有兴趣的话可以去学习一下hadoop 2.x


参考博客:

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

http://www.csdn.net/article/2013-12-18/2817842-bd-hadoopyarn

http://www.educity.cn/net/1620190.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值