Hadoop日记——Hadoop2.x介绍

Haddop2.x在1.x基础上做了很多的改进,主要增加和改进了4个部分:HAFederationYARNMapReduce On YARN

1. HA

Hadoop中的NameNode好比是人的心脏,绝对不可以停止工作。在Hadoop1.x时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是Hadoop1.x中的单点问题,也是Hadoop1.x不可靠的表现Hadoop2的出现解决了这个问题,也被称为HA。Hadoop2.x中HDFS的HA主要指的是可以同时启动2个NameNode。其中一个处于工作(Active)状态,另一个处于随时待命(Standby)状态。这样,当一个NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动切换到另一个NameNode提供服务。如图所示

Hadoop日记——Hadoop2.x介绍_第1张图片
这里写图片描述

HA主要有以下特点:

  • 主备NameNode
  • 解决单点故障
    • 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
    • 所有DataNode同时向两个NameNode汇报数据块信息
  • 两种切换方式
  • 基于Zookeeper自动切换方案
    • ZookeeperFailoverController:监控NameNode健康状态,并向Zookeeper注册NameNode
    • NameNode怪调后,ZKFC为NameNode竞争所,获得ZKFC所的NameNode变为active

2.Federation

单Active NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,NN成为了性能的瓶颈
为了解决这个问题,Hadoop 2.x提供了HDFS Federation, 示意图如下

Hadoop日记——Hadoop2.x介绍_第2张图片
这里写图片描述

Federation主要有以下特点:

  • 通过多个NameNode/NameSpace把元数据的储存和管理分散到多个节点中,使到NameNode/NameSpace可以把通过增加机器来进行水平扩展
  • 能把单个NameNode的负载分散到多个节点,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个NameSpace来隔离不同类型的应用,把不同类型应用的HDFS元数据的储存和管理分派到不同的NameNode中

3.YARN

YARN:Yet Another Resource negotiator

  • Hadoop2.0新引入的资源管理系统,直接从MRv1演化而来的;
    • 核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现
    • ResourceManager:负责整个集群的资源管理和调度
    • ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等
  • YARN的引入,使得多个计算框架可运行在一个集群中
    • 每个应用程序对应一个ApplicationMaster
    • 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等

4.MapReduce On YARN

MapReduce On YARN:MRv2

  • MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTracker构建MRv1系统中
  • 基本功能模块:
    • YARN:负责资源管理和调度
    • MRAppMaster:负责任务切分、任务迪奥五、任务监控和容错等
    • MapTask/ReduceTask:任务驱动引擎,与MRv1一直
  • 每个MapReduce作业对应一个MRAppMaster
    • MRAppMaster任务调度
    • YARN将资源分配给MRAppMaster
    • MRAppMaster进一步将资源分配给内部任务
  • MRAppMaster容错
    • 失败后,由YARN重新启动
    • 任务失败后,MRAppMaster重新申请资源

你可能感兴趣的:(Hadoop日记——Hadoop2.x介绍)