1. Hadoop 是 Apache 软件基金会旗下的一个开源的分布式计算平台。
2. Hadoop 提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理;
“处理”什么问题?
海量数据的存储和海量数据的分析计算问题。也就是 Hadoop 的两大核心:HDFS 和 MapReduce。
3. Hadoop 的核心组件有:
由图可以看出,Hadoop1.X内核主要由分布式存储系统(HDFS)和分布式计算框架(MapReduce)两个系统组成,而Hadoop2.X主要新增了资源管理框架YARN。
Hadoop 1.X 生态几乎是以 MapReduce 为核心的,但是慢慢的发展,其扩展性差、资源利用率低、可靠性 等问题都越来越让人觉得不爽,于是才产生了 YARN,并且 Hadoop 2.X 生态都是以 YARN 为核心。
4. 广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈。
经过多年的发展,Hadoop生态圈不断完善和成熟,目前已经包含了多个子项目。除了核心的HDFS和MapReduce以外,Hadoop生态圈还包括Hive、ZooKeeper、HBase、Sqoop、Flume等功能组件。
Hadoop生态圈中的大部分组件的LOGO选用了动物图形,因此Hadoop的生态系统就像是一群动物在狂欢。
Hadoop是由Apache Lucence创始人Doug Cutting创建的,Lucence是一个应用广泛的文本搜索系统库。
Hadoop的发展历程如下图所示:
Hadoop源自2002年的Apache Nutch项目——一个开源的网络搜索引擎并且也是Lucence项目的一部分。在2002年的时候,Nutch项目遇到了棘手的难题,该搜索引擎框架无法扩展到拥有数十亿网页的网络。
在 2003年和2004年, Googles 分别公布了 GFS 和 Mapreduce 两篇论文。 Doug Cutting 和 Mike Cafarella 发现这与他们的想法不尽相同,且更加完美,完全脱离了人工运维的状态,实现了自动化。
在经过一系列周密考虑和详细总结后,2006 年, Dog Cutting 放奔创业,随后几经周折加入了 yahoo 公司(Nutch 的部分也被正式引入),机绿巧合下,他以自己儿子的一个玩具大象的名字 Hadoop 命名了该项。当系统进入 Yahoo 以后,项目逐渐发展并成熟了起来。首先是集群规模,从最开始几十台机器的规模发展到能支持上千个节点的机器,中间做了很多工程性质的工作;然后是除搜索以外的业务开发, Yahoo 逐步将自己广告系统的数据挖掘相关工作也迁移到了 Hadoop 上,使 Hadoop 系统进一步成熟化了。
2007 年,纽约时报在 100 个亚马逊的虚拟机服务器上使用 Hadoop 转换了 4TB 的图片数据更加加深了人们对 Hadoop 的印象。
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209s。
在2009年5月,Hadoop更是把1TB数据排序时间缩短到62s。
2011年, Yahoo** 将 Hadoop 团队独立出来**,成立了ー个子公司 Hortonworks,专门提供 Hadoop 相关的服务。
Hadoop从此名声大噪,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准。
Hadoop 是一个能够让用户轻松架构和使用的分布式计算的平台。用户可以轻松地在 Hadoop 发和运行处理海量数据的应用程序。其优点主要有以下几个:
(1)高可靠性:数据存储多个备份,集群设置在不同机器上,可以防止一个节点宕机造成集群损坏。当数据处理请求失败后,Hadoop会自动重新部署计算任务。Hadoop框架中有备份机制和校验模式,Hadoop会对出现问题的部分进行修复,也可以通过设置快照的方式在集群出现问题时回到之前的一个时间点。
(2)高扩展性:Hadoop 是在可用的计算机集群间分配数据并完成计算任务的。为集群添加新的节点并不复杂,所以集群可以很容易进行节点的扩展,扩大集群。
(3)高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
(4)高容错性:Hadoop的分布式文件系统HDFS在存储文件时会在多个节点或多台机器上存储文件的备份副本,当读取该文档出错或者某一台机器宕机了,系统会调用其他节点上的备份文件,保证程序顺利运行。如果启动的任务失败,Hadoop会重新运行该任务或启用其他任务来完成这个任务没有完成的部分。
(5)低成本:Hadoop 是开源的,既不需要支付任何费用即可下载并安装使用,节省了软件购买的成本。
(6)可构建在廉价的机器上:Hadoop不要求机器的配置达到极高的水准,大部分普通商用服务器就可以满足要求,它通过提供多个副本和容错机制来提高集群的可靠性。
(7)Hadoop基本框架用Java语言编写:Hadoop含有使用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。