Hadoop入门进阶步步高(六)-Hadoop1.x与Hadoop2的差别
六、Hadoop1.x与Hadoop2的差别
1、变更介绍
Hadoop2相比較于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了非常大的提高,Hadoop2中有两个重要的变更:
l HDFS的NameNodes能够以集群的方式布署,增强了NameNodes的水平扩展能力和可用性;
l MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator)。
1.1、HDFS的变化 - 增强了NameNode的水平扩展及可用性
1.1.1、Hadoop的1.X架构的介绍
而在1.x中的NameNodes仅仅可能有一个,尽管能够通过SecondaryNameNode与NameNode进行数据同步备份,可是总会存在一定的时延,假设NameNode挂掉,可是假设有部份数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题。
架构例如以下:
包括两层:
Namespace
l 包括文件夹、文件以及块的信息
l 支持对Namespace相关文件系统的操作,如添加、删除、改动以及文件和文件夹的展示
Block Storage Service包括两部份
l 块管理(在Namenode中实现的)
提供数据节点群集成员的登记,并定期通过心跳进行检查。
提供块报告以及块的存储位置的维护
提供对块的操作,如对块进行增删改的操作及获取块的存储地址
对块的复本的的复制以及存储位置的管理
l 存储 - 提供Datanode进行数据的本地存储,并提供读写的操作
1.1.1、Hadoop的2.X架构的介绍
在2.X中,HDFS的变化,主要体如今增强了NameNode的水平扩展及可用性,能够同一时候部署多个NameNode,这些NameNodes之间是相互独立,也就是说他们不须要相互协调,DataNode同一时候在全部NameNodes注冊,做为他们共同拥有的存储节点,并向定时向全部的这些NameNodes发送心跳块使用情况的报告,并处理全部NameNodes向其发送的指令。
架构例如以下:
存储块池(Block Pool)
一个存储块池是由一组存储块组成,它属于一个单独的Namespace(Namenode),集群中全部存储块池的存储块都是存放在Datanodes中的。每一个存储块池与其他的存储块池都是独立管理的,因而其在为新的块生成Block IDs时,就不须要与其他Namespace(Namenode)中的存储块池进行协作,即使一个Namespace(Namenode)挂掉了,也不会使得Datanodes中的块被訪问不到,由于其他Namespace(Namenode)中的存储块池也存放了Datanodes中全部存储块的信息。
一个命名空间(Namespace)和它的块池一起被称为命名空间向量。它是一个自包括的管理单元。当一个Namenode/namespace被删除,存储于Datanodes中的相应的存储块池也会被删除掉,在集群的更新过程中,每一个命名空间向量都是以一个总体进行升级的。
集群ID(ClusterID)
集群ID的添加,是用于确认集群中全部的节点,也能够在格式化其他Namenodes时指定集群ID,并使其添加到某个集群中。
1.2、MapReduce拆分JobTracker为资源管理及任务生命周期管理两个独立的组件
MapReduce在Hadoop2中称为MR2或YARN,将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的服务,用于管理全部资源的ResourceManager以及管理每一个应用的ApplicationMaster,ResourceManager用于管理向应用程序分配计算资源,每一个ApplicationMaster用于管理应用程序、调度以及协调。一个应用程序能够是经典的MapReduce架构中的一个单独的任务,也能够是这些任务的一个DAG(有向无环图)任务。ResourceManager及每台机上的NodeManager服务,用于管理那台机的用户进程,形成计算架构。每一个应用程序的ApplicationMaster实际上是一个框架详细库,并负责从ResourceManager中协调资源及与NodeManager(s)协作运行并监控任务。
架构图:
当中ResourceManager包括两个基本的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。
定时调用器(Scheduler):
定时调度器负责向应用程序分配置资源,它不做监控以及应用程序的状 态跟踪,而且它不保证会重新启动由于应用程序本身或硬件出错而运行失败 的应用程序。
应用管理器(ApplicationManager):
应用程序管理器负责接收新任务,协调并提供在ApplicationMaster容 器失败时的重新启动功能。
节点管理器(NodeManager):
NodeManager是ResourceManager在每台机器的上代理,负责容器的管 理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager/Scheduler提供这些资源使用报告。
应用总管(ApplicationMaster):
每一个应用程序的ApplicationMaster负责从Scheduler申请资源,以及 跟踪这些资源的使用情况以及任务进度的监控。
2、详细变化
2.1、配置文件的路径
在1.x中,Hadoop的配置文件是放在$HADOOP_HOME/conf文件夹下的,关键的配置文件在src文件夹都有相应的存放着默认值的文件,例如以下:
|
配置文件 |
默认值配置文件 |
|
$HADOOP_HOME/conf/core-site.xml |
$HADOOP_HOME/src/core/core-default.xml |
|
$HADOOP_HOME/conf/hdfs-site.xml |
$HADOOP_HOME/src/hdfs/hdfs-default.xml |
|
$HADOOP_HOME/conf/mapred-site.xml |
$HADOOP_HOME/src/mapred/mapred-default.xml |
我们在$HADOOP_HOME/conf以下配置的core-site.xml等的值,就是对默认值的一个覆盖,假设没有在conf以下的配置文件里设置,那么就使用src以下相应文件里的默认值,这个在使用过程中非常方便,也非常有助于我们理解。
Hadoop能够说是云计算的代名词,其也有非常多衍生的产品,不少衍生的配置方式都遵从Hadoop的这样的配置方式,如HBase的配置文件也是$HBase/conf文件夹,核心配置的名称就是hbase-site.xml,假设学习了Hadoop再去学习HBase,从配置的理解上来说,就会有一种亲切的感觉。
可是在2.x中,Hadoop的架构发生了变化,而配置文件的路径也发生了变化,放到了$HADOOP_HOME/etc/hadoop文件夹,这样改动的目的,应该是让其更接近于Linux的文件夹结构吧,让Linux用户理解起来更easy。Hadoop 2.x中配置文件的几个基本的变化:
l 去除了原来1.x中包括的$HADOOP_HOME/src文件夹,该文件夹包括关键配置文件的默认值;
l 默认不存在mapred-site.xml文件,须要将当前mapred-site.xml.template文件copy一份并重命名为mapred-site.xml,而且仅仅是一个具有configuration节点的空文件;
l 默认不存在mapred-queues.xml文件,须要将当前mapred-queues.xml.template文件copy一份并重命名为mapred-queues.xml;
l 删除了master文件,如今master的配置在hdfs-site.xml通过属性dfs.namenode.secondary.http-address来设置,例如以下:
|
<property> <name>dfs.namenode.secondary.http-address</name> <value>nginx1:9001</value> </property> |
l 添加了yarn-env.sh,用于设置ResourceManager须要的环境变量,主要须要改动JAVA_HOME;
l 添加yarn-site.xml配置文件,用于设置ResourceManager;
2.2、命令文件文件夹的变化
在1.x中,全部的命令文件,都是放在bin文件夹下,没有区分client和服务端命令,而且终于命令的运行都会调用hadoop去运行;而在2.x中将服务端使用的命令单独放到了sbin文件夹,当中有几个基本的变化:
l 将./bin/hadoop的功能分离。在2.x中./bin/hadoop命令仅仅保留了这些功能:client对文件系统的操作、运行Jar文件、远程拷贝、创建一个Hadoop压缩、为每一个守护进程设置优先级及运行类文件,另外添加了一个检查本地hadoop及压缩库是否可用的功能,详情能够通过命令“hadoop -help”查看。
而在1.x中,./bin/hadoop命令还包括:NameNode的管理、DataNode的管理、 TaskTracker及JobTracker的管理、服务端对文件系统的管理、文件系统的检查、获取队列 信息等,详情能够通过命令“hadoop -help”查看。
l 添加./bin/hdfs命令。./bin/hadoop命令的功能被剥离了,并非代表这些命令不须要了,而是将这些命令提到另外一个名为hdfs的命令中,通过hdfs命令能够对NameNode格式化及启动操作、启动datanode、启动集群平衡工具、从配置库中获取配置信息、获取用户所在组、运行DFS的管理client等,详细能够通过“hdfs -help”查看。
l 添加./bin/yarn命令。原来1.x中对JobTracker及TaskTracker的管理,放到了新增的yarn命令中,该命令能够启动及管理ResourceManager、在每台slave上面都启一个NodeManager、运行一个JAR或CLASS文件、打印须要的classpath、打印应用程序报告或者杀死应用程序等、打印节点报告等,详情能够通过命令“yarn -help”查看。
l 添加./bin/mapred命令。该命令能够用于运行一个基于管道的任务、计算MapReduce任务、获取队列的信息、独立启动任务历史服务、远程文件夹的递归拷贝、创建hadooop压缩包,详情能够通过“./mapred -help”。
Hadoop入门进阶步步高(六)-Hadoop1.x与Hadoop2的差别的更多相关文章
- Hadoop入门进阶步步高(五)-搭建Hadoop集群
五.搭建Hadoop集群 上面的步骤,确认了单机能够运行Hadoop的伪分布运行,真正的分布式运行无非也就是多几台slave机器而已,配置方面的有一点点差别,配置起来就很easy了. 1.准备三台se ...
- Hadoop入门进阶步步高(三)-配置Hadoop
三.配置Hadoop 1.设置$HADOOP_HOME/conf/hadoop-env.sh 这个文件里设置的是Hadoop运行时须要的环境变量,在1.2.1版中共同拥有19个环境变量.例如以下: ...
- Hadoop入门进阶步步高(一)-环境准备
前言 Hadoop从存储上来说,是相似于冗余磁盘阵列(RAID)的存储方式.将数据分散存储并提供以提供吞吐量,它的存储系统就是HDFS(Hadoop Distuibute Fils System).从 ...
- Hadoop入门进阶步步高(二)-文件夹介绍
二.Hadoop文件夹结构 这里重点介绍几个文件夹bin.conf及lib文件夹. 1.$HADOOP_HOME/bin文件夹 文件名 说明 hadoop 用于运行hadoop脚本命令,被hadoop ...
- Hadoop入门进阶课程3--Hadoop2.X64位环境搭建
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
随机推荐
- symbol(s) not found for architecture i386
此问题针对百度地图真机调试和模拟器.a文件的选取问题 "$(SRCROOT)/MobileYonyou/Third/BaiduMap_IOSSDK_v2.3.0_Lib/Release$(E ...
- Java程序猿学习当中各个阶段的建议
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...
- IDEA系统提示中文乱码问题及解决
近期要切换到IDEA开发, 在输出界面发现打印小方格, 或者乱码, 是由于字体不支持中文, 选择一个支持中文的就正常了.(由于IDEA在国内下载错误信息会用中文显示. 而之前Eclipse错误都是英文 ...
- 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)
题目链接:传送门 题意: n个格子排成一行.我们有m种颜色.能够给这些格子涂色,保证相邻的格子的颜色不同 问,最后恰好使用了k种颜色的方案数. 分析: 看完题目描写叙述之后立刻想到了一个公式 :C(m ...
- 怎样通过git协作开发
近期iOS群里的一些小伙伴刚刚毕业,刚參加工作的小伙伴们,对于怎样进行git下的一个写作开发抱有较大的疑惑.今天小汤我就给大家分享个git下协作开发的小技巧. 怎样通过git协作开发? 当两个开发人员 ...
- NLP 苏图南 打破自我设限 突破自我—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XNTAyNDg3MTky.html?x
- c++野指针 之 实战篇
一:今天做poj上的3750那个题,用到了list的erase方法.提交之后总是报runtime error! 纠结了好长时间.曾有一度怀疑过vector的erase和list的erase处理方式不一 ...
- 教你怎么去一个APP的JSON数据,你懂的
今天闲着没事.谁让我今天是光棍节呢,算给大家一个福利.没事逛着应用市场.想找个应用高仿下,突然发现一个应用竟然跟我一个名字尼玛,尼玛应用界面做的非常easy.我认为应该不难. 惯性操作想去破解APK. ...
- Java虚拟机几个命令行参数说明
一.运行class文件 执行带main方法的class文件,Java虚拟机命令参数行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: java ...
- Java Executor 框架
Java Executor 框架 Executor框架是指java5中引入的一系列并发库中与executor相关的功能类,包括Executor.Executors. ExecutorService.C ...