• 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访问协议


    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/)

  • 相关阅读:
    Xcode 配置常用变量(SRCROOT, PROJECT_DIR, PROJECT_NAME)
    Git submodule实战
    Charles抓Https的包
    Vue-Quill-Editor 富文本编辑器的使用
    vue计算属性无法监听到数组内部变化
    移动端键盘弹起导致底部按钮上浮解决方案
    js中数组删除 splice和delete的区别,以及delete的使用
    js实现复制input的value到剪切板
    treetable
    vue中状态管理vuex的使用分享
  • 原文地址:https://www.cnblogs.com/admln/p/hadoop220-270.html
Copyright © 2020-2023  润新知