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/)
Hadoop从2.2.0到2.7的更多相关文章
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- 【hadoop】hadoop3.2.0的安装并测试
前言:前段时间将hadoop01的虚拟机弄的崩溃掉了,也没有备份,重新从hadoop02虚拟上克隆过来的,结果hadoop-eclipse插件一样的编译,居然用不起了,找了3天的原因,最后还是没有解决 ...
- hadoop: hive 1.2.0 在mac机上的安装与配置
环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79 前提:hadoop必须先安装,且处于运行状态(伪分式模式或全分布模式均可 ...
- Hadoop上路-04_HBase0.98.0入门
以下操作在Hadoop分布式集群基础上进行. 一.分布式环境搭建 下载:)验证 3)修改%HBASE%/conf/hbase-env.sh 4)修改$HBASE_HOME/conf/hbase-sit ...
- Pig安装及简单使用(pig版本0.13.0,Hadoop版本2.5.0)
原文地址:http://www.linuxidc.com/Linux/2014-03/99055.htm 我们用MapReduce进行数据分析.当业务比较复杂的时候,使用MapReduce将会是一个很 ...
- 理解Hadoop脚本hadoop-2.5.0/bin/hadoop
1 #!/usr/bin/env bash 此处为什么不是 #!/bin/bash ? 考虑到程序的可移植性,env的作用就是为了找到正确的脚本解释器(这里就是bash),在不同的Linux ...
- Hadoop 2.2 & HBase 0.96 Maven 依赖总结
由于Hbase 0.94对Hadoop 2.x的支持不是非常好,故直接添加Hbase 0.94的jar依赖可能会导致问题. 但是直接添加Hbase0.96的依赖,由于官方并没有发布Hbase 0.96 ...
- 【hadoop】hadoop3.2.0应用环境搭建与使用指南
下面列出我搭建hadoop应用环境的文章整理在一起,不定期更新,供大家参考,互相学习!!! 杂谈篇: [英语学习]Re-pick up English for learning big data (n ...
- Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=lenovo, access=WRITE, inode="/user/hadoop/spark/people_savemode_test/_temporary/0":hadoop:supergro
保存文件时权限被拒绝 曾经踩过的坑: 保存结果到hdfs上没有写的权限 通过修改权限将文件写入到指定的目录下 * * * $HADOOP_HOME/bin/hdfs dfs -chmod 777 /u ...
随机推荐
- 【转】从零开始编写自己的C#框架(7)——需求分析
转自:http://www.cnblogs.com/EmptyFS/p/3653934.html 本章内容虽然叫“需求分析”,实际上关于具体的需求分析操作步骤并没有深入去写,因为细化的话那将是一本厚厚 ...
- quora 中有关angular与emberjs的精彩辩论
原贴地址,要注册才能看,这里只有国人翻译的一部分内容 本文源自于Quora网站的一个问题,作者称最近一直在为一个新的Rails项目寻找一个JavaScript框架,通过筛选,最终纠结于Angular. ...
- MYSQL数据库性能调优之五:解决慢查询--存储引擎与数据类型
3.数据类型的影响 4.存储引擎的影响 看你的mysql现在已提供什么存储引擎:mysql> show engines; 看你的mysql当前默认的存储引擎:mysql> show var ...
- Dagger学习笔记
@Inject 提供依赖的构造函数,或者需要依赖的成员变量 @Module 提供依赖,实例化的地方( 使用module实例化,方便测试的时候替换成其他对象,而这也是和构造方法注入的区别,如果用构造方法 ...
- fastscript调用delphi方法和DELPHI调用FASTSCRIPT方法
fastscript调用Delphi过程: 1. 先创建事件处理方法:TfsCallMethodEvent 2. 然后再用调用TfsScript.AddMethod方法,第一个参数为Delphi方法 ...
- 2013年度Python Git工具
Pycoders周刊根据读者对周刊文章的点击数据,评选出了2013年最受关注的和Git相关的Python工具. git-workflow (github.com) 可视化你的 git 工作流程的工具, ...
- inputs
inputs.bind({ keyup:function(){$(this).val($(this).val().replace(/\D/g,''));}, focus:function(){if($ ...
- 配置Synergy(Server : XP, client: Win7)
此文只是为了Mark一下配置方法,以防以后重装系统的时候,忘记. 首先,因为我的Server机器是XP,所以要求两台机器,都是安装的x86的版本,而不能是x64的版本. 我用的版本是1.4.11, ...
- php二叉树算法
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2^{i-1}个结点:深度为k的二叉树至多有2^k-1个结点:对任何一棵二叉树T,如 ...
- keycode按键对照表
功能场景,鼠标在某区域内,比如多个条件的搜索框内,按下enter键让其具有,点击 [确定/搜索]按钮的功能.在编辑的区域内,点击enter键,让其有 [保存]按钮的功能.则可这样:$("#s ...