Hadoop2.0

为什么会出现Hadoop2?

Hadoop1的问题

  1. hdfs的namenode和mapreduce的jobtracker都是单点。
  2. namenode所在的服务器的内存不够用时,那么集群就不能工作了。
  3. mapreduce集群的资源利用率比较低。

Hadoop1和Hadoop2对比

MapReduce 资源管理和数据处理

YARN 资源管理

Hadoop的重大改进:HA和Federation

为什么需要HA和Federation?

1. 单点故障

在Hadoop 2.0之前,也有若干技术试图解决单点故障的问题

Secondary NameNode。它不是HA,它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。当NameNode(以下简称NN)失效的时候,Secondary NN并无法立刻提供服务,Secondary NN甚至无法保证数据完整性:如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失。

Backup NameNode (HADOOP-4539)。它在内存中复制了NN的当前状态,算是Warm Standby,可也就仅限于此,并没有failover等。它同样是阶段性的做checkpoint,也无法保证数据完整性。

手动把name.dir指向NFS。这是安全的Cold Standby,可以保证元数据不丢失,但集群的恢复则完全靠手动。

Facebook AvatarNode。Facebook有强大的运维做后盾,所以Avatarnode只是Hot Standby,并没有自动切换,当主NN失效的时候,需要管理员确认,然后手动把对外提供服务的虚拟IP映射到Standby NN,这样做的好处是确保不会发生脑裂的场景。其某些设计思想和Hadoop 2.0里的HA非常相似,从时间上来看,Hadoop 2.0应该是借鉴了Facebook的做法。

还有若干解决方案,基本都是依赖外部的HA机制,譬如DRBD,Linux HA,VMware的FT等等。

2. 集群容量和集群性能

单NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,常用的估算公式为1G对应1百万个块,按缺省块大小计算的话,大概是64T (这个估算比例是有比较大的富裕的,其实,即使是每个文件只有一个块,所有元数据信息也不会有1KB/block)。同时,所有的元数据信息的读取和操作都需要与NN进行通信,譬如客户端的addBlock、getBlockLocations,还有DataNode的blockRecieved、sendHeartbeat、blockReport,在集群规模变大后,NN成为了性能的瓶颈。Hadoop 2.0里的HDFS Federation就是为了解决这两个问题而开发的。

Hadoop的HA--->解决单点问题

Hadoop的Federation 解决 namenode所在的服务器的内存不够用时,那么集群就不能工作了。问题

federation的含义是NameNode不同享,DataNode共享。

这个图过于简明,许多设计上的考虑并不那么直观,我们稍微总结一下

多个NN共用一个集群里DN上的存储资源,每个NN都可以单独对外提供服务

每个NN都会定义一个存储池,有单独的id,每个DN都为所有存储池提供存储

DN会按照存储池id向其对应的NN汇报块信息,同时,DN会向所有NN汇报本地存储可用资源情况

如果需要在客户端方便的访问若干个NN上的资源,可以使用客户端挂载表,把不同的目录映射到不同的NN,但NN上必须存在相应的目录

这样设计的好处大致有:

改动最小,向前兼容

现有的NN无需任何配置改动.

如果现有的客户端只连某台NN的话,代码和配置也无需改动。

分离命名空间管理和块存储管理

提供良好扩展性的同时允许其他文件系统或应用直接使用块存储池

统一的块存储管理保证了资源利用率

可以只通过防火墙配置达到一定的文件访问隔离,而无需使用复杂的Kerberos认证

客户端挂载表

通过路径自动对应NN

使Federation的配置改动对应用透明

HA的自动failover

在这个图里,我们可以看出HA的大致架构,其设计上的考虑包括:

利用共享存储来在两个NN间同步edits信息。

以前的HDFS是share nothing but NN,现在NN又share storage,这样其实是转移了单点故障的位置,但中高端的存储设备内部都有各种RAID以及冗余硬件包括电源以及网卡等,比服务器的可靠性还是略有提高。通过NN内部每次元数据变动后的flush操作,加上NFS的close-to-open,数据的一致性得到了保证。社区现在也试图把元数据存储放到BookKeeper上,以去除对共享存储的依赖,Cloudera也提供了Quorum Journal Manager的实现和代码,这篇中文的blog有详尽分析:基于QJM/Qurom Journal Manager/Paxos的HDFS HA原理及代码分析

DataNode(以下简称DN)同时向两个NN汇报块信息。

这是让Standby NN保持集群最新状态的必需步骤,不赘述。

用于监视和控制NN进程的FailoverController进程

显然,我们不能在NN进程内进行心跳等信息同步,最简单的原因,一次FullGC就可以让NN挂起十几分钟,所以,必须要有一个独立的短小精悍的watchdog来专门负责监控。这也是一个松耦合的设计,便于扩展或更改,目前版本里是用ZooKeeper(以下简称ZK)来做同步锁,但用户可以方便的把这个ZooKeeper FailoverController(以下简称ZKFC)替换为其他的HA方案或leader选举方案。

隔离(Fencing)),防止脑裂),就是保证在任何时候只有一个主NN,包括三个方面:

共享存储fencing,确保只有一个NN可以写入edits。

客户端fencing,确保只有一个NN可以响应客户端的请求。

DataNode fencing,确保只有一个NN可以向DN下发命令,譬如删除块,复制块,等等。

Hadoop yarn平台

时间: 2024-08-28 01:02:33

Hadoop2.0的相关文章

大话Hadoop1.0、Hadoop2.0与Yarn平台

2016年12月14日21:37:29 Author:张明阳 博文链接:http://blog.csdn.net/a2011480169/article/details/53647012 近来这几天一直在忙于Hbase的实验,也没有太静下心来沉淀自己,今天打算写一篇关于Hadoop1.0.Hadoop2.0与Yarn的博文,从整体上把握三者之间的联系,博客内容如有问题,欢迎留言指正!OK,进入本文正题-- 在开始接触Hadoop的时候,也许大家对于Hadoop是下面的一个概念:Hadoop由两部

hadoop入门(3)——hadoop2.0理论基础:安装部署方法

一.hadoop2.0安装部署流程         1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费)         2.使用RPM包安装部署:Apache hadoop不支持.HDP与CDH提供         3.使用jar包安装部署:各版本均提供.(初期为了理解hadoop,建议使用这种方式)         部署流程:                 准备硬件(Linux操作系统)                 准备软件安装包,并安装基础软件

Hadoop2.0源码包简介

Hadoop2.0源码包简介 1.解压源码包: 2.目录结构: hadoop-common-project:Hadoop基础库所在目录,如RPC.Metrics.Counter等.包含了其它所有模块可能会用到的基础库. hadoop-mapreduce-project:MapReduce框架的实现,在第一代MR即MRv1中,MapReduce由编程模型(map/reduce).调度系统(JobTracker和TaskTracker)和数据处理引擎(MapTask和ReduceTask)等模块组成

Hadoop-2.0 目录简介

Hadoop-2.0 目录简介 一.目录结构 将下载的压缩包解压: 解压后文件夹如下: 二.各文件夹目录结构 1.bin:Hadoop2.0的最基本管理脚本和使用脚本所在目录.这些脚本是sbin目录下管理脚本的基础实现,我们可以直接用这些脚本管理和使用Hadoop. 2.etc:这个目录里的文件只要接触过Hadoop的人都很熟悉.Hadoop配置文件目录.首先是从Hadoop1.0继承来的三个文件core-site.xml.hdfs-site.xml.mapred-site.xml,然后还有一个

hadoop-2.0.0-cdh4.6.0 安装

1.创建hadoop用户[所有操作都是root,在所有master和slaver上]1).创建hadoop用户:adduser hadoop2).更换密码:passwd hadoop====================================================================================2.安装jdk[所有操作都是root,在所有master和slaver上]将jdk.tar.gz解压到/et/local/:tar –zxvf jdk

HADOOP2.0(HDFS2)以及YARN设计的亮点

YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个NodeManager上的资源进行统一管理和调度.当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManger申请资源,并要求NodeManager启动可以占用一定资源的任务. Hadoop2.0 YARN包含以下实体,可以看图: R

Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结

实验开发环境所用软件: [[email protected] local]# ll total 320576 -rw-r--r-- 1 root root 52550402 Mar 6 10:34 apache-flume-1.6.0-bin.tar.gz drwxr-xr-x 7 root root 4096 Jul 15 10:46 flume drwxr-xr-x. 11 root root 4096 Jul 10 21:04 hadoop -rw-r--r--. 1 root root

Cloudera Hadoop 5& Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)

1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3.4.6 CDH Hadoop 5.3.0 Vmware 10 Hive 0.13.1 HBase 0.98.6 Impala 2.1.0 Oozie 4.0.0 Hue 3.7.0 2.内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1.Hadoop2.0高阶运维,包括H

apache的hadoop升级到CDH hadoop2.0时遇到的问题及解决

1:引入的jar包 1.X版本有hadoop-core包:而2.x没有 如果你需要hdfs就引入\share\hadoop\common\lib + hadoop-common-2.0.0-cdh4.6.0.jar + hadoop-hdfs-2.0.0-cdh4.6.0.jar + \share\hadoop\yarn\* 如果你要MR则加上 \share\hadoop\mapreduce1\* 或 \share\hadoop\mapreduce2\* 2:遇到权限问题的时候最好是把权限赋给当

hadoop2.0 和1.0的区别

1. Hadoop 1.0中的资源管理方案Hadoop 1.0指的是版本为Apache Hadoop 0.20.x.1.x或者CDH3系列的Hadoop,内核主要由HDFS和MapReduce两个系统组成,其中,MapReduce是一个离线处理框架,由编程模型(新旧API).运行时环境(JobTracker和TaskTracker)和数据处理引擎(MapTask和ReduceTask)三部分组成.Hadoop 1.0资源管理由两部分组成:资源表示模型和资源分配模型,其中,资源表示模型用于描述资源