1.5 Hadoop概述
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力速度运算和存储。
Hadoop标志图如图1-3所示。
图1-3 Hadoop标志图
1.5.1 Hadoop的起源及简介
Hadoop是由Apache Software Foundation公司于2005年秋天作为Lucene的子Hadoop logo项目Nutch的一部分被正式引入的。它受到最先由Google Lab开发的Map Reduce和Google File System(GFS)的启发。2006年3月,Map Reduce和Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目中。
Hadoop是最受欢迎的在Internet上对搜索关键字进行内容分类的工具,但其也可以解决许多要求极大伸缩性的问题。例如,如果您要grep一个10TB的巨型文件,会出现什么情况?在传统的系统上,这将需要很长时间。但Hadoop在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。
Hadoop是Google集群系统的一个开源实现,是一个项目总称。主要由HDFS、MapReduce和HBase组成。其中HDFS是Google File System(GFS)的开源实现;MapReduce是Google MapReduce的开源实现;HBase是Google BigTable的开源实现。
这个分布式框架很有创造性,而且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。因此Apache基金会用Java实现了一个开源版本,支持Fedora、Ubuntu等Linux平台。目前,Hadoop受到Yahoo的支持,而且Yahoo内部也准备使用Hadoop代替原来的分布式系统。
1.5.2 Hadoop的历史
Hadoop从一个开源的Apache基金会项目开始,随着越来越多的用户加入,不断地使用、贡献和完善,形成一个强大的生态系统,从2009年开始,随着云计算和大数据的发展,Hadoop作为海量数据分析的最佳解决方案,开始受到许多IT厂商的关注,从而出现了许多Hadoop的商业版,以及支持Hadoop的产品,包括软件和硬件。
(1)2004年,Google发表论文,向全世界介绍了MapReduce。
(2)2005年初,为了支持Nutch搜索引擎项目,Nutch的开发者基于Google发布的MapReduce报告,在Nutch上开发了一个可工作的MapReduce应用。
(3)2005年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS(Nutch Distributed File System)来运行。
(4)2006年1月,Doug Cutting加入Yahoo,Yahoo提供了一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统。
(5)2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
(6)2007年,百度开始使用Hadoop做离线处理,目前差不多80%的Hadoop集群用做日志处理。
(7)2007年,中国移动开始在“大云”研究中使用Hadoop技术,规模超过1000台。
(8)2008年,淘宝开始投入研究基于Hadoop的系统——云梯,并将其用于处理电子商务相关数据。云梯1的总容量大概为9.3PB,包含了1100台机器,每天处理约18 000道作业,扫描500TB数据。
(9)2008年1月,Hadoop成为Apache的顶级项目。
(10)2008年2月,Yahoo宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
(11)2008年7月,Hadoop打破1TB数据排序基准测试纪录。Yahoo的一个Hadoop集群用209s完成1TB数据的排序,比上一年的纪录保持者所保持的297s快了将近90s。
(12)2009年3月,Cloudera推出CDH(Cloudera’s Distribution including Apache Hadoop)平台,完全由开放源码软件组成,目前已经进入第3版。
(13)2009年5月,Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62s。
(14)2009年7月,Hadoop Core项目更名为Hadoop Common。
(15)2009年7月,MapReduce和Hadoop Distributed File System(HDFS)成为Hadoop项目的独立子项目。
(16)2009年7月,Avro和Chukwa成为Hadoop新的子项目。
(17)2010年5月,Avro脱离Hadoop项目,成为Apache的顶级项目。
(18)2010年5月,HBase脱离Hadoop项目,成为Apache的顶级项目。
(19)2010年5月,IBM提供了基于Hadoop的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。
(20)2010年9月,Hive(Facebook)脱离Hadoop,成为Apache的顶级项目。
(21)2010年9月,Pig脱离Hadoop,成为Apache的顶级项目。
(22)2011年1月,ZooKeeper脱离Hadoop,成为Apache的顶级项目。
(23)2011年3月,Apache Hadoop获得Media Guardian Innovation Awards 。
(24)2011年3月,Platform Computing宣布在它的Symphony软件中支持Hadoop MapReduce API。
(25)2011年5月,Mapr Technologies公司推出分布式文件系统和MapReduce引擎——MapR Distribution for Apache Hadoop。
(26)2011年5月,HCatalog 1.0发布。该项目由Hortonworks在2010年3月提出,主要用于解决HDFS的存储瓶颈。
(27)2011年4月,SGI(Silicon Graphics International)基于SGI Rackable和CloudRack服务器产品线提供Hadoop优化的解决方案。
(28)2011年5月,EMC为客户推出一种新的基于开源Hadoop解决方案的数据中心设备,以助其满足客户日益增长的数据分析需求并加快利用开源数据分析软件。EMC将通过一个基于分布式的Hadoop解决方案集成自己的Greenplum软件,从而可以在一个可扩展的设备里进行海量数据分析任务(GFS+Greenplum)。Greenplum是EMC在2010年7月收购的一家开源数据仓库公司。
(29)2011年5月,在收购了Engenio之后,NetApp推出与Hadoop应用结合的产品E5400存储系统。
(30)2011年6月,Calxeda公司(之前公司的名字是Smooth-Stone)发起了“开拓者行动”,一个由10家软件公司组成的团队,该团队将为基于Calxeda即将推出的ARM系统上芯片的服务器提供支持,并为Hadoop提供低功耗服务器技术。
(31)2011年6月,数据集成供应商Informatica发布了其旗舰产品,产品的设计初衷是处理当今事务和社会媒体所产生的海量数据,同时支持Hadoop。
(32)2011年7月,Yahoo和硅谷风险投资公司Benchmark Capital创建了Hortonworks公司,旨在让Hadoop更加鲁棒(可靠),并让企业用户更容易安装、管理和使用Hadoop。
(33)2011年8月,Cloudera公布了一项有益于合作伙伴生态系统的计划——创建一个生态系统,以便硬件供应商、软件供应商,以及系统集成商可以一起探索如何使用Hadoop更好地洞察数据。
(34)2011年8月,Dell与Cloudera联合推出Hadoop解决方案——Cloudera Enterprise。Cloudera Enterprise基于Dell PowerEdge C2100机架服务器,以及Dell PowerConnect 6248以太网交换机。
1.5.3 Hadoop的功能与作用
为什么需要Hadoop呢?众所周知,现代社会的信息量增长速度极快,这些信息里又积累着大量的数据,包括个人数据和工业数据。预计到2020年,每年产生的数字信息将会有超过1/3的内容驻留在云平台中或借助云平台处理。需要对这些数据进行分析和处理,以获取更多有价值的信息。如何高效地存储和管理这些数据,如何分析这些数据呢?这时可以选用Hadoop系统,它在处理这类问题时,采用了分布式存储方式,提高了读写速度,并扩大了存储容量。采用MapReduce来整合分布式文件系统上的数据,可保证分析和处理数据的高效。与此同时,Hadoop还采用存储冗余数据的方式保证了数据的安全性。
Hadoop中HDFS的高容错特性,以及它是基于Java语言开发的,这使得Hadoop可以部署在低廉的计算机集群中,同时不限于某个操作系统。Hadoop中HDFS的数据管理能力、MapReduce处理任务时的高效率,以及它的开源特性,使其在同类的分布式系统中大放异彩,并在众多行业和科研领域中被广泛采用。
1.5.4 Hadoop的优势
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点。
(1)高可靠性
Hadoop按位存储和处理数据的能力值得人们信赖。
(2)高扩展性
Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
(3)高效性
Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此其处理速度非常快。
(4)高容错性
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
1.5.5 Hadoop的现状与趋势
由于Hadoop优势突出,基于Hadoop的应用已经遍地开花,尤其是在互联网领域。Yahoo通过集群运行Hadoop,以支持广告系统和Web搜索的研究;Facebook借助集群运行Hadoop,以支持其数据分析和机器学习;百度则使用Hadoop进行搜索日志的分析和网页数据的挖掘工作;淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的“大云”(BigCloud)系统用于对数据进行分析并对外提供服务。
2008年2月,Hadoop最大贡献者的Yahoo构建了当时规模最大的Hadoop应用,它们在2000个节点上面执行了超过1万个Hadoop虚拟机器来处理超过5PB的网页内容,分析大约1MB个网络连接之间的网页索引资料。这些网页索引资料压缩后超过300TB。Yahoo正是基于这些为用户提供高质量的搜索服务的。
Hadoop目前已经取得了非常突出的成绩。随着互联网的发展,新的业务模式还将不断涌现,Hadoop的应用也会从互联网领域向电信、电子商务、银行、生物制药等领域拓展。相信在未来,Hadoop将会在更多的领域中扮演幕后英雄的角色,为我们提供更加快捷、优质的服务。