Hadoop1.x和Hadoop2.x有什么区别
这篇文章给大家分享的是有关Hadoop1.x和Hadoop2.x有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Hadoop 2.0 产生背景
Hadoop 1.0 中HDFS和MapReduce在高可用、扩展性等方面存在问题
JobTracker访问压力大,影响系统扩展性;
难以支持除MapReduce之外的计算框架,比如Spark、Storm等。
NameNode单点故障,难以应用于在线场景;
NameNode压力过大,且内存受限,影响系统扩展性。
HDFS 存在的问题
MapReduce存在的问题
HDFS 2.x
解决HDFS 1.0 单点故障和内存受限问题。
解决单点故障
参考 HDFS High Availability Using the Quorum Journal Manager
参考 ZooKeeper Getting Started Guide
HDFS HA:通过准备NameNode解决;
如果住NameNode发生故障,则切换到备NameNode。
解决内存受限问题
HDFS Federation (联邦)
水平扩展,支持多个NameNode;
每个NameNode分管一部分目录;
所有NameNode共享所有DataNode存储的资源。
2.x仅是架构上发生了改变,使用方式不变
对HDFS使用者透明
HDFS 1.x 中的命令和API仍可以使用
主备NameNode
解决单点故障
主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换;
所有DataNode同时向两个NameNode汇报数据块信息。
两种切换选择
手动切换:通过命令实现准备之间的切换,可以用HDFS升级等场合;(X)
自动切换:基于Zookeeper实现。 (√)
基于Zookeeper自动切换方案
Zookeeper Failove Controller:监控Namenode健康状态,并向Zookeeper 注册 Namenode
NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active
HDFS 2.x Federation
通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使namenode/namespace可以通过增加机器来进行水平扩张。
能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候也不会降低HDFS的性能。可以通过多个namsespace来隔离不同类型的应用,把不同类型应用的HDFS的存储和管理分派到不同的namenode中。
YARN
YARN - Yet Another Resource Negotiator;
Hadoop 2.0 新引入的资源管理系统,直接从MRv1演化而来;
核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现; -ResourceManager:负责整个集群的资源管理和调度;整个集群只有一个;
ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等;一个应用程序对应一个ApplicationMaster;
YARN的引入,是的多个计算框架可运行在一个集群中
每个应用程序对应一个ApplicationMaster;
目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等。
MapReduce On YARN
运行在YARN之上的MapReduce称为MRv2;
将MapReduce作业直接运行在YARN上,而不是运行在由JobTracker和TaskTracker构建的MRv1系统中;
在Hadoop2.0中并不存在JobTracker和TaskTracker;
MRv2的模块基本功能:
YARN:负责资源管理和调度;
MRAppMaster:负责一个应用程序/作业的任务切分、任务调度、任务监控和容错;
Map/Reduce Task:任务驱动引擎,与MRv1一致;
每个应用程序/作业(MapReduce作业)对应一个MRAppMaster
单个应用程序/作业运行失败,不会影响其他应用程序/作业,由YARN重新启动;
任务失败后,MRAppMaster重新申请资源;
负责应用程序/作业相关的事务,包括将从YARN分配得到的资源二次分配给内部的任务、任务切分、任务健康和容错等;
感谢各位的阅读!关于"Hadoop1.x和Hadoop2.x有什么区别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!