Hadoop 1.0 -> Hadoop 2.0(主)-> Hadoop 3.0 发展简要,
Hadoop,一般提到它,指的是广义上的:指代大数据的一个生态圈,包括很多其他的软件(如spark/kafka/hive/hbase/zookeeper/等等),是一个适合大数据的分布式存储和计算平台。
Hadoop 发展:
-
Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
-
2003年、2004年,谷歌发表的两篇论文为该问题提供了可行的解决方案:
- 分布式文件系统(GFS,Google File System),可用于处理海量网页的存储
- 分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题
- 其中,Hadoop还源于(加上)第3篇论文:BigTable,一个大型的分布式数据库
-
2004年,最初的版本(称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。起因是受到了两篇论文的启发,两人用2年(2003-2004)业余时间实现了HDFS和MapReduce机制,使Nutch性能飙升。
-
2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。
-
2006年2月,被分离出来,成为一套完整独立的软件,起名为Hadoop。Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展
-
2006年-2009年,一直狂奔在增加集群节点、数据量的路上
-
2009年3月, Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)。基于开源Hadoop的一个分发版本
-
2009年7月,MapReduce 和 HDFS 成为Hadoop项目的独立子项目
-
2011年12月27日,1.0.0版本(由 0.20.x版本演变而来。当时主流(经典)版本是0.20.2)释出。标志着Hadoop已经初具生产规模。Hadoop一代有0.20,0.21,0.22,0.23这样的版本,0.21.x和0.22.x是下一代Hadoop中的MapReduce实现,只不过资源管理系统还是用的JobTracker,没有使用Yarn。Hadoop 1.0:
- HDFS,由一个NameNode和多个DataNode组成
- MapReduce,由一个JobTracker和多个TaskTracker组成
-
2010年5月,Avro、Hbase都脱离Hadoop项目,成为Apache顶级项目
-
2010年9月,Hive( Facebook) 、Pig都脱离Hadoop,成为Apache顶级项目
-
2011年1月, ZooKeeper 脱离Hadoop,成为Apache顶级项目
-
2011年5月,HCatalog 1.0发布(基于开源Hadoop的一个分发版本)。该项目由Hortonworks 在2010年3月份提出,HCatalog主要用于解决数据存储、元数据的问题,主要解决HDFS的瓶颈,它提供了一个地方来存储数据的状态信息,这使得 数据清理和归档工具可以很容易的进行处理
-
2012年5月16日,发布2.0.0-alpha版(基于0.23.x)。最初的0.23版本,完全不同于之前的版本,是一套全新的架构,包含HDFS Federation和Yarn两个系统。后来也由0.23演化出了2.0.x系列的二代版本。2.x(比0.23.x(它也是第二代框架,只是缺少了NN HA特性(Namenode High Available,即Namenode高可用性))增加了NameNode HA和Wire-compatibility两个重大特性。
- 首先,要了解:Hadoop1.0是由HDFS和MR组成;HDFS是由一个NameNode和多个DataNode组成;MR由一个JobTracker和多个TaskTracker组成。它们都是主从结构
- 解决了hadoop1.0的单点故障问题,由于架构设计原因hadoop1.0的NameNode只有一个节点,一旦出现问题将导致整个集群瘫痪不能使用,对于这些hadoop2.0提出了HDFS Federation,它让多个NameNode(2.x实际暂时只支持两个,3.x版本才真正实现了多NameNode)分管不同的目录进而实现访问隔离和横向扩展,两个NameNode分为Active和Standbay状态,当Active状态的NameNode主现了问题可以配置成自动切换成Standbay的那个NameNode
- 将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(RM 负责所有应用程序的资源分配)和ApplicationMaster(AM 负责管理一个应用程序)实现,即引入了资源管理框架Yarn,从而使MR在扩展性和多框架支持等方面的不足得到了很大提升
- Yarn作为Hadoop2.0中的资源管理系统(Data Operating System),它是一个通用的资源管理模块,不仅仅只是对MR一种框架,也可以在上面运行其他框架,如Tez、Spark、Storm等
-
2017年6月26日,发布3.0.0-alpha1版。整合了许多重要的增强功能,提供了稳定、高质量的API,可用于实际的产品开发。相对于Hadoop 2.x的主要变化(新特性):
- 基于JDK 1.8开发(Hadoop 2.x是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,这直接迫使Hadoop社区基于JDK 1.8重新发布一个新的Hadoop版本)
- 引入了一些重要的功能和优化,包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化、YARN基于cgroup的内存和磁盘IO隔离、YARN container resizing等
- 最大改变的是HDFS,HDFS 通过最近black块(块大小:256M)计算,根据最近计算原则,本地black块,加入到内存,先计算,通过IO,共享内存计算区域,最后快速形成计算结果
- Hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+磁盘,共同处理数据,提升性能(快spark 10倍)
- 支持多NameNode(实现了更加可靠的HA)
- 引入EC纠删码技术(EC: Erasure Coding) 存储空间节省50%
- 精简了内核,Hadoop shell脚本重构
- 默认端口修改。部分服务默认端口修改不再绑定到Linux临时端口 (HDFS-9427,HADOOP-12811)
-
2019年1月21日,发布3.2.0。带来了许多新功能和 1000 多个更改,通过 Hadoop 3.0.0 的云连接器的增强功能进一步丰富了平台,并服务于深度学习用例和长期运行的应用。
-
2019年5月13日,Now。
目前工作中还是以Hadoop 2.0为主。找到适合自己的技术选型、架构设计
Yarn带给Hadoop 2.0的是,将Hadoop变成一个更原生的平台,运行大量数据为主导的应用和服务,帮助将Hadoop系统从一个数据处理系统变成一个涵盖了完整数据中心操作系统的软件生态
补充:MapReduce 1.0 -> MapReduce 2.0(MRv1-> MRv2)
用最简短的语言解释MapReduce:
We want to count all the books in the library. You count up shelf #1,
I count up shelf #2. That’s map. The more people we get, the faster it
goes.我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。
Now we get together and add our individual counts. That’s reduce.
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。
MRv1里,有些场景不适合:实时场景、迭代场景、图计算场景
MRv1计算框架主要由三部分组成:
- 编程模型:将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入的数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,Reduce阶段将key相同的value进行规约处理,并将最终结果写到HDFS上
- 数据处理引擎:由MapTask和ReduceTask组成,分别负责Map阶段逻辑和Reduce阶段的逻辑处理
- 运行时环境:由一个JobTracker和若干个TaskTracker两类服务组成,其中JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行它
MapReducer2.0具有与MRv1相同的编程模型和数据处理引擎,唯一不同的是运行时环境。
MRv2是在MRv1基础上经加工之后,运行于资源管理框架Yarn之上的计算框架。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)。相当于把之前JobTracker所做的一些事情进行了分担,从而使MR在扩展性和多框架支持等方面的不足得到了很大提升。
参考:他们都是大佬
1、Hadoop官方/core、或这个官方地址/
2、hadoop的介绍以及发展历史:思路很好,这篇文章
3、Hadoop1.和hadoop2.的异同简洁总结
4、hadoop2.0 和1.0的区别
5、hadoop1.0 和 Hadoop 2.0 的区别
6、Hadoop 3相对于hadoop2的 新特性
7、大数据学习笔记——hadoop生态圈:画的架构图、生态图很好
8、一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了:写的比喻还不错
9、大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
10、Hadoop、Spark等5种大数据框架对比,你的项目该用哪种?
11、Hadoop3.0新特性介绍,比Spark快10倍
12、MapReduce2框架的原理解析
13、2_分布式计算框架MapReduce