介绍hadoop不同版本的区别

hadoop1.0

hadoop1.0是最早的版本,只是在google上发表的三篇论文转变过来的。所以hadoop1.0在开发过程当中存在诸多的缺陷,hadoop1.0主要是有HDFS(分布式系统)和一个分布式计算框架(MapReduce)组成的。

对于HDFS,hadoop1.0常用的是主从架构,其中主节点是namenode节点,从节点是datanode节点,对于HDFS的介绍可以参考:

HDFS的介绍:https://www.oraclejsq.com/hdpjc/060102518.html

hadoop1.0中,NameNode节点有且只有一个,虽然可以通过SecondaryNameNode进行主节点数据备份,但是存在延时情况,假如主节点挂掉,这时部分数据还未同步到SecondaryNameNode节点上,就会存在资源数据的缺失。因为NameNode是存储着DataNode节点等元数据信息。

对于MapReduce,hadoop1.0也是一个简单的主从结构,是有一个主JobTracker和多个从的TaskTracker组成,而且在hadoop1.0中JobTracker任务繁重:

1.1:负责接收客户端的计算任务,同时要把任务分发给TaskTracker进行执行

1.2:通过心跳机制来管理TaskTracker节点的运行情况。

hadoop1.0


hadoop2.0

针对hadoop1.0中在HDFS、MapReduce在高可用的、扩展性等方面存在的问题,hadoop做了相应的改进。


2.1、从HDFS上改进:

hadoop2.0增加了HDFS HA机制,解决了hdfs1.0中的单点故障问题,通过HA进行standbynamenode的热备份。

hadoop2.0增加了HDFS Federation(联邦)水平扩展,支持多个namenode同时运行,每一个namenode分管一批目录,然后共享所有datanode的存储资源,从而解决1.0当中单个namenode节点内存受限问题。

hadoop2.0虽然HDFS架构上发生了一些变化,但是使用方式不变,1.0当中相关的命令与API任然可以继续使用。

HDFS


2.2、从MapReduce上改进:

在hadoop2.0当中增加了YARN框架,针对hadoop1.0中主JobTracker压力太大的不足,把JobTracker资源分配和作业控制分开,利用Resource Manager在namenode上进行资源管理调度,利用ApplicationMaster进行任务管理和任务监控。由NodeManager替代TaskTracker进行具体任务的执行,因此MapReduce2.0只是一个计算框架。对比hadoop1.0中相关资源的调用全部给Yarn框架管理。

MapReduce


hadoop3.0

hadoop2.0之后版本就相对稳定,大部分实际生产环境中都使用的是2.0,包括本次我们教程也是基于2.0上进行讲解,hadoop3.0主要增加了一些性能上的优化和支持:

3.1、java运行环境升级为1.8,对之前低版本的Java不在支持。

3.2、HDFS3.0支持数据的擦除编码,调高存储空间的使用率。

3.3、一些默认端口的改变。

3.4、增加一些MapReduce的调优。