Hadoop从2.2.0到2.7


Hadoop2.2.0

GA release 通用版本,Hadoop2.2.0就是一个通用版本

Hadoop2.2.0是从Hadoop1.1.0升级过来的,增加了以下特性:

  1.增加了YARN;

  2.HDFS增加了HA;

  3.HDFS增加了Federation;

  4.HDFS增加了快照 ;

  5.HDFS的读写使用了NFSv3;

  6.Hadoop可以支持运行在Windows;

  7.和Hadoop1的MR二进制兼容性 ;

  8.增加了一些和生态系统中其他产品的测试类。

YARN是“Yet Another Resource Negotiator”的简称,它是Hadoop2.0引入的一个全新的通用资源管理系统,可在其上运行各种应用程序和框架,比如MapReduce、Tez、Storm等,YARN是在MRv1的基础上衍化而来的,相似的资源管理系统还有mesos;

HA是High Availability,是为了解决HDFS 的NameNode单点故障问题,方案是通过主备切换,主备NameNode共享元数据信息;

HDFS Federation是为了解决HDFS NameNode单点内存受限问题,它允许集群中存在多个NameNode,每个NameNode分管一部分目录;

HDFS 快照是指HDFS文件系统的某一时刻的只读镜像,它的出现使得管理员可定时为重要文件或者目录做快照,以防止数据误删、丢失等;

通过NFSv3访问HDFS,NFS允许用户像访问本地文件系统一样访问远程文件系统,简化了HDFS的使用,这是通过引入了NFS gateway服务实现的,将NFS协议转换为HDFS访问协议

Hadoop从2.2.0到2.7


Hadoop2.3.0

新特性:

  1.异构层次化存储架构;

  2.DateNode 缓存;

  3.MR的自动化部署。

在之前的版本,HDFS的存储介质是磁盘,不管是热数据还是冷数据,随着新型介质的日益成熟,HDFS开始支持异构介质,即同一个Hadoop集群可以用同时使用多种存储介质,用户可根据需要将不用的数据存在不同的介质中,比如热点数据存在SSD上,冷数据存在磁盘上;

HDFS DateNode之前没有考虑数据缓存,随着内存计算框架的兴起,Hadoop也不想把自己局限在离线处理和分析上,而是能够同时指出离线分析和在线分析,为了指出在线处理,就要降低延迟,提高性能,其中个人觉得可观的就是Tachyon存储系统;

在Hadoop 2.0中,MapReduce jar包是同YARN和HDFS jar包打包在一起的,部署Hadoop时会一同被分发到各个节点上的,这实际上违背了YARN的设计初衷。YARN是一个资源管理系统,其上面所有应用程序不需要事先部署到各个节点上,只需在客户端存在一份jar包,然后由YARN自动分发到各个节点上即可,为此,Hadoop 2.3.0对此进行了修正。


Hadoop2.4.0

新特性:

  1.HDFS支持ACL;

  2.HDFS支持在线升级;

  3.HDFS支持https协议;

  4.YARN RM容错;

  5.增加了Application Timeline Server;

  6.Capacity scheduler 支持资源抢占。

ACL权限控制机制是对HDFS现有的基于Linux文件访问权限控制的补充;

?Application Timeline Server还不是特别了解;


Hadoop2.4.1

修改了2.4.0中HDFS管理子命令refreshNamenodes, deleteBlockPool 和 shutdownDatanode权限检查的BUG


Hadoop2.5.0

新特性:

  1.改进了HTTP代理服务器的认证;

  2.增加了一个新的Hadoop指标监控sink,允许直接写到Graphite;(不太了解)

  3.改善了Hadoop文件系统兼容相关的规范;

  4.支持 POSIX风格的扩展文件系统;

  5.支持离线image浏览,客户端现在可以通过WebHDFS的API浏览一个fsimage;

  6.NFS网关得到大量可支持性的改进和bug修复。Hadoop portmapper不在需要运行网关,网关现在可以拒绝没有权限的端口的连接;

  7.优化了web UI;

  8.YARN的REST API现在支持写/修改操作。用户可以用REST API提交和杀死应用程序;

  9.时间线存储到YARN,用来存储一个应用通用的和特殊的信息,支持Kerberos认证;(不太了解)

  10.公平调度器支持动态分层用户队列,运行时,用户队列在任一指定的父队列中被动态的创建。


Hadoop2.5.1

修改了一些BUG。


Hadoop2.5.2

修改了一些BUG。


Hadoop2.6.0

在2.6.0中增加了许多beta版的东西,感觉还是有前景,不过可以预见的是后面必然后又2.6.X的不断修复,也可以说是不成熟的Hadoop版本。

其中比较感兴趣的或者说会非常有价值的两个特性是labels based scheduling和Support running of applications natively in Docker containers,从支持docker容器来看,Hadoop社区还是比较紧跟技术更迭的,一时半会儿绝对不像某些人说的那样淘汰的!

直接引用董的博客,写的很好:

什么是Label based scheduling?

故名思议,Label based scheduling是一种调度策略,就像priority-based scheduling一样,是调度器调度众多调度策略中的一种,可以跟其他调度策略混合使用,实际上,hadoop也是这样做的。但是,相比于其他调度策略,基于标签的调度策略则复杂的多,这个feature的代码量非常大,基本上需要修改YARN的各个模块,包括API, ResourceManager,Scheduler等。该策略的基本思想是:用户可以为每个nodemanager标注几个标签,比如highmem,highdisk等,以表明该nodemanager的特性;同时,用户可以为调度器中每个队列标注几个标签,这样,提交到某个队列中的作业,只会使用标注有对应标签的节点上的资源。举个例子:

比如最初你们的hadoop集群共有20个节点,硬件资源是32GB内存,4TB磁盘;后来,随着spark地流行,公司希望引入spark计算框架,而为了更好地运行spark程序,公司特地买了10个大内存节点,比如内存是64GB,为了让spark程序与mapreduce等其他程序更加和谐地运行在一个集群中,你们希望spark程序只运行在后来的10个大内存节点上,而之前的mapreduce程序既可以运行在之前的20个节点上,也可以运行在后来的10个大内存节点上,怎么办?有了label-based scheduling后,这是一件非常easy的事情,你需要按一以下步骤操作:

步骤1:为旧的20个节点打上normal标签,为新的10个节点打上highmem标签;

步骤2:在capacity scheduler中,创建两个队列,分别是hadoop和spark,其中hadoop队列可使用的标签是nornal和highmem,而spark则是highmem,并配置两个队列的capacity和maxcapacity。

如何配置使用Label based scheduling?

首先,要选择apache hadoop 2.6或hdp2.2(可使用ambari部署)发行版。

之后按照以下步骤操作:

步骤1:添加系统级别的label(相当于所有label的全集),注意,各个节点上的label必须都在系统级别的label中。

yarn rmadmin -addToClusterNodeLabels normal,highmem

步骤2:为各个节点分别添加label(可动态修改)

yarn rmadmin -replaceLabelsOnNode “nodeId,label1,label2,…,labeln”

注意,nodeId是nodemanager的唯一标示,注意,一个节点上可以有多个nodemanager,每个nodemanager的nodeid可以在ResourceManager界面上看到,通常有host和PRC port拼接而成,默认情况下,各个nodemanager的RPC port是随机选取的,你可以将所有的nodemanager配置成一样的,便于管理:

<property>

<name>yarn.nodemanager.address</name>

<value>0.0.0.0:45454</value>

</property>

步骤3:配置label重启恢复功能。这样,label信息会保存到hdfs上(默认是保存在内存中的),之后yarn重新启动,可以自动恢复所有label信息:

<property>

<name>yarn.node-labels.manager-class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager</value>

</property>

步骤4:修改capacity scheduler相关配置,设置每个队列对应的label,以及每中label的资源上下限。具体配置,可参考相关资源。

总结

基于标签的调度策略是hadoop yarn新引入的feature,它能让YARN更好地运行在异构集群中,进而更好地管理和调度混合类型的应用程序。


Hadoop2.7

Common
当使用HTTP proxy server时,认证有所加强.这是对于使用proxy server访问WebHDFS是非常有用的;
一种hadoop新的允许直接写Graphite的标准库;
规范了HCFS(Hadoop Compatible Filesystem )的相关帮助;

HDFS
支持POSIX风格的FileSystem扩展属性;
使用 OfflineImageViewer, 客户端可以通过 WebHDFS API查看fsimage;
NFS网关做了些改进和bug修复。 Hadoop portmapper 不在需要运行网关, 网关可以拒绝非特权端口连接;
SecondaryNameNode, JournalNode, and DataNode 已经可以可视化;

YARN
YARN’s REST APIs 现在支持 写/修改 操作. 用户可以通过REST APIs提交和 kill应用程序;
时间存储在yarn中,为applications的存储和应用的通用具体信息,支持通过Kerberos认证
公平调度器支持动态的按等级划分队列,用户队列可以动态的创建在其它父队列里;

在2.7中Hadoop开始不再支持JDK1.6


大部分内容分摘自官网(http://hadoop.apache.org/releases.html#News)和董的博客(http://dongxicheng.org/)

上一篇:cocos2d JS 自定义事件分发器(接收与传递数据) eventManager


下一篇:Python模块的介绍