10、Hadoop 2.0产生背景

 

产生背景

Hadoop1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题

--HDFS存在的问题

(1)NameNode单点故障,难以应用于在线场景

(2)NameNode压力过大,且内存受限(元数据全部存在内容中),影响系统扩展性。

--MapReduce存在的问题

(1)JobTracker访问压力过大,单点故障,影响系统扩展性

(2)难以支持除MapReduce之外的计算框架,比如Spark、Storm等

 

Hadoop1.x与Hadoop2.x比较

 

多了一层YARN中间层。Hadoop2.x由HDFS、MapReduce和YARN三个分支构成;

(1)HDFS : NN Federation(联邦-将元数据分成两个独立的NameNode进行工作)、HA(高可用)

(2)MapReduce:运行在YARN上的MR(从YARM申请资源和数据);

(3)YARN:资源管理系统(内存、CPU等资源,所有分布式节点都往yarn汇报,保证计算框架申请资源的时候充分利用这些资源)

 

hadoop2.x解决的问题:

A、解决了HDFS1.0中单点故障和内存受限问题;

(1)解决了单点故障

--HDFS HA:通过主备NameNode解决

--如果主NameNode发生故障,则切换到备NameNode上

(2)解决了内存受限问题

--HDFS Federation(联邦)

--水平扩展,支持多个NameNode;

--每个NameNode分管一部分目录(独立工作)

--所有NameNode共享所有DataNode存储资源

B、2.x 仅在架构上发生变化,使用方式不变

C、对HDFS使用者透明

D、HDFS 1.x中的命令和API仍可以使用

 

HDFS 2.x 高可用HA

 

 

(1)DataNode向NameNode(NN)和NN Standby(备份节点-可以多个)汇报,为了保证NN主节点挂掉后,NN Standby备节点能完全接管,NN Active元数据不在存储在本机磁盘文件(内存挂掉之后无法使用),而是将元数据存储在JN(JournalNode集群中<必须有多个点保存元数据>,保证元数据可以共享且不因为主节点挂掉或磁盘损坏导致Standby备份节点无法接管)。JournalNode就是用来存元数据的,所有的NN都会从JN读取或实时写入到JN上去。但NN挂调后,NN Standby从JN读取元数据并接管NN Active。

(2)FailoverController对NN进行心跳检查,是控制NN切换的一个服务;同时与Zookeeper进行心跳;Zookeeper可以通过FailoverController对NN进行切换!如果需要升级或修改NN Active,那么可以手动停止NN,使得Standby切换到Active状态,这点要强于Keepalive的功能!

(3)客户端请求Zookeeper获取Active的工作的NN的地址,然后客户端向真实的NN发送读写请求;

 

HDFS 2.0 HA解决的问题:

(1)解决点点故障

. 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换

. 所有的DataNode同时向两个NodeNode汇报数据块信息

(2)两种切换选择

. 手动切换:通过命令实现主备之间的切换,可以用HDFS的升级等场景

. 自动切换:基于Zookeeper实现

(3)基于Zookeeper的自动切换方案

. Zookeeper FailoverController: 监控NameNode健康状态。并向Zookeeper注册NameNode

. NameNode挂掉之后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为Active

 

HDFS 2.x Federation(联邦)

用于超大数据中,且被分成多块的情况

(1)通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使得NameNode/namespace可以通过增加机器来进行水平扩展。

(2)能把单个NameNode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用。把不同类型的应用的HDFS元数据的存储和管理分派到不同的namespace的NameNode中。

 

HDFS 2.x YARN

再也看不到JobTracker和TaskTracker了原因:

(1)YARN: Yet Another Resource Negotiator

(2)Hadoop2.0新引入的资源管理系统,直接从MRv1演化而来的

. 核心思想: 将MRv1中的JobTracker的资源管理和任务调度两个功能分开,分别有ResourceManager和ApplicationMaster进程实现;

. ResourceManager: 负责整个集群的资源管理和调度(只有一个);

. ApplicationMaster: 负责应用程序相关的事务,比如任务调度、任务监控和容错等(运行在真正的某一个节点上的,有多个);

(3)YARN的引入,是的多个计算框架可运行在一个集群中

. 每个应用程序对应一个ApplicationMaster

. 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等

 

MapReduce On YARN

-- MapReduce On YARN : MRv2

-- 将MapReduce作业直接运行在YARN上,而不是有JobTracker和TaskTracker构建的MRv1系统中

-- 基本功能模块

. YARN : 负责资源管理和调度

. MRAppMaster(NodeManager中) :  负责任务切分、任务调度、任务监控和容错等

. MapTask/ReduceTask : 任务驱动引擎,与MRv1一致

-- 每个MapReduce作业对应一个MRAppMaster

. MRAppMaster任务调度

. YARN将资源分配给MRAppMaster

. MRAppMaster进一步将资源分配给内部的任务

-- MRAppMaster容错

. 失败后,有YARN重新启动

. 任务失败后,MRAppMaster重新申请资源

 

快来成为我的朋友或合作伙伴,一起交流,一起进步!
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值