Hadoop介绍
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。
下面列举hadoop主要的一些特点:
1 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。2 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。3 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。4 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。
Hadoop主要子项目
* Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
* HDFS: Hadoop 分佈式文件系統 (Distributed File System) – HDFS (Hadoop Distributed File System)
* MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
* HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目[1])
* Hive:数据仓库工具,由Facebook贡献。
* Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
* Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
Hadoop发展历史
Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者,Doug Cutting如此解释Hadoop的得名:"这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。Googol就是由小孩命名的。"
Hadoop及其子项目和后继模块所使用的名字往往也与其功能不相关,经常用一头大象或其他动物主题(例如:"Pig")。较小的各个组成部分给与 更多描述性(因此也更俗)的名称。这是一个很好的原则,因为它意味着可以大致从其名字猜测其功能,例如,jobtracker 的任务就是跟踪MapReduce作业。
从头开始构建一个网络搜索引擎是一个雄心勃勃的目标,不只是要编写一个复杂的、能够抓取和索引网站的软件,还需要面临着没有专有运行团队支持运行它的挑战,因为它有那么多独立部件。同样昂贵的还有:据Mike Cafarella和Doug Cutting估计,一个支持此10亿页的索引需要价值约50万美元的硬件投入,每月运行费用还需要3万美元。 不过,他们相信这是一个有价值的目标,因为这会开放并最终使搜索引擎算法普及化。
Nutch项目开始于2002年,一个可工作的抓取工具和搜索系统很快浮出水面。但他们意识到,他们的架构将无法扩展到拥有数十亿网页的网络。在 2003年发表的一篇描述Google分布式文件系统(简称GFS)的论文为他们提供了及时的帮助,文中称Google正在使用此文件系统。 GFS或类似的东西,可以解决他们在网络抓取和索引过程中产生的大量的文件的存储需求。具体而言,GFS会省掉管理所花的时间,如管理存储节点。在 2004年,他们开始写一个开放源码的应用,即Nutch的分布式文件系统(NDFS)。
2004年,Google发表了论文,向全世界介绍了MapReduce。 2005年初,Nutch的开发者在Nutch上有了一个可工作的MapReduce应用,到当年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS来运行。
Nutch中的NDFS和MapReduce实现的应用远不只是搜索领域,在2006年2月,他们从Nutch转移出来成为一个独立的Lucene 子项目,称为Hadoop。大约在同一时间,Doug Cutting加入雅虎,Yahoo提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统(见后文的补充材料)。在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的,是一个多样化、活跃的社区。通过这次机会,Hadoop成功地被雅虎之 外的很多公司应用,如Last.fm、Facebook和《纽约时报》。(一些应用在第14章的案例研究和Hadoop维基有介绍,Hadoop维基的网 址为 http://wiki.apache.org/hadoop/PoweredBy。)
有一个良好的宣传范例,《纽约时报》使用亚马逊的EC2云计算将4 TB的报纸扫描文档压缩,转换为用于Web的PDF文件。 这个过程历时不到24小时,使用100台机器运行,如果不结合亚马逊的按小时付费的模式(即允许《纽约时报》在很短的一段时间内访问大量机器)和 Hadoop易于使用的并行程序设计模型,该项目很可能不会这么快开始启动。
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。运行在一个910节点的群集,Hadoop在209秒内排序了1 TB的数据(还不到三分半钟),击败了前一年的297秒冠军。同年11月,谷歌在报告中声称,它的MapReduce实现执行1TB数据的排序只用了68 秒。 在2009年5月,有报道宣称Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
构建互联网规模的搜索引擎需要大量的数据,因此需要大量的机器来进行处理。Yahoo!Search包括四个主要组成部分:Crawler,从因特 网下载网页;WebMap,构建一个网络地图;Indexer,为最佳页面构建一个反向索引;Runtime(运行时),回答用户的查询。WebMap是 一幅图,大约包括一万亿条边(每条代表一个网络链接)和一千亿个节点(每个节点代表不同的网址)。创建和分析此类大图需要大量计算机运行若干天。在 2005年初,WebMap所用的基础设施名为Dreadnaught,需要重新设计以适应更多节点的需求。Dreadnaught成功地从20个节点扩 展到600个,但需要一个完全重新的设计,以进一步扩大。Dreadnaught与MapReduce有许多相似的地方,但灵活性更强,结构更少。具体说 来,每一个分段(fragment),Dreadnaught作业可以将输出发送到此作业下一阶段中的每一个分段,但排序是在库函数中完成的。在实际情形 中,大多数WebMap阶段都是成对存在的,对应于MapReduce。因此,WebMap应用并不需要为了适应MapReduce而进行大量重构。
Eric Baldeschwieler(Eric14)组建了一个小团队,我们开始设计并原型化一个新的框架(原型为GFS和MapReduce,用C++语言编 写),打算用它来替换Dreadnaught。尽管当务之急是我们需要一个WebMap新框架,但显然,标准化对于整个Yahoo! Search平台至关重要,并且通过使这个框架泛化,足以支持其他用户,我们才能够充分运用对整个平台的投资。
与此同时,我们在关注Hadoop(当时还是Nutch的一部分)及其进展情况。2006年1月,雅虎聘请了Doug Cutting,一个月后,我们决定放弃我们的原型,转而使用Hadoop。相较于我们的原型和设计,Hadoop的优势在于它已经在20个节点上实际应 用过。这样一来,我们便能在两个月内搭建一个研究集群,并着手帮助真正的客户使用这个新的框架,速度比原来预计的快许多。另一个明显的优点是Hadoop 已经开源,较容易(虽然远没有那么容易!)从雅虎法务部门获得许可在开源方面进行工作。因此,我们在2006年初设立了一个200个节点的研究集群,我们将WebMap的计划暂时搁置,转而为研究用户支持和发展Hadoop。
Hadoop七年风雨路
Hadoop的发展基本上经历了这样一个过程:从一个开源的Apache基金会项目,随着越来越多的用户的加入,不断地 使用、贡献和完善,形成一个强大的生态系统,从2009年开始,随着云计算和大数据的发展,Hadoop作为海量数据分析的最佳解决方案,开始受到许多 IT厂商的关注,从而出现了许多Hadoop的商业版以及支持Hadoop的产品,包括软件和硬件。
2004年,Google发表论文,向全世界介绍了MapReduce。
2005年初,为了支持Nutch搜索引擎项目,Nutch的开发者基于Google发布的MapReduce报告,在Nutch上开发了一个可工作的MapReduce应用。
2005年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS(Nutch Distributed File System )来运行。
2006年1月,Doug Cutting加入雅虎,Yahoo!提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统。
2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2007年,百度开始使用Hadoop做离线处理,目前差不多80%的Hadoop集群用作日志处理。
2007年,中国移动开始在“大云”研究中使用Hadoop技术,规模超过1000台。
2008年,淘宝开始投入研究基于Hadoop的系统——云梯,并将其用于处理电子商务相关数据。云梯1的总容量大概为9.3PB,包含了1100台机器,每天处理约18000道作业,扫描500TB数据。
2008年1月,Hadoop成为Apache顶级项目。
2008年2月,Yahoo!宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
2008年7月,Hadoop打破1TB数据排序基准测试记录。Yahoo!的一个Hadoop集群用209秒完成1TB数据的排序 ,比上一年的纪录保持者保持的297秒快了将近90秒。
2009 年 3 月,Cloudera推出CDH(Cloudera’s Distribution including Apache Hadoop)平台,完全由开放源码软件组成,目前已经进入第3版。
2009年5月,Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
2009年7月 ,Hadoop Core项目更名为Hadoop Common;
2009年7月 ,MapReduce 和 Hadoop Distributed File System (HDFS) 成为Hadoop项目的独立子项目。
2009年7月 ,Avro 和 Chukwa 成为Hadoop新的子项目。
2010年5月 ,Avro脱离Hadoop项目,成为Apache顶级项目。
2010年5月 ,HBase脱离Hadoop项目,成为Apache顶级项目。
2010年5月,IBM提供了基于Hadoop 的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。
2010年9月,Hive( Facebook) 脱离Hadoop,成为Apache顶级项目。
2010年9月,Pig脱离Hadoop,成为Apache顶级项目。
2011年1月,ZooKeeper 脱离Hadoop,成为Apache顶级项目。
2011年3月,Apache Hadoop获得Media Guardian Innovation Awards 。
2011年3月, Platform Computing 宣布在它的Symphony软件中支持Hadoop MapReduce API。
2011年5月,Mapr Technologies公司推出分布式文件系统和MapReduce引擎——MapR Distribution for Apache Hadoop。
2011 年5月,HCatalog 1.0发布。该项目由Hortonworks 在2010年3月份提出,HCatalog主要用于解决数据存储、元数据的问题,主要解决HDFS的瓶颈,它提供了一个地方来存储数据的状态信息,这使得 数据清理和归档工具可以很容易的进行处理。
2011年4月,SGI( Silicon Graphics International )基于SGI Rackable和CloudRack服务器产品线提供Hadoop优化的解决方案。
2011年5月,EMC为客户推出一种新的基于开源Hadoop解决方案的数据中心设备——GreenPlum HD,以助其满足客户日益增长的数据分析需求并加快利用开源数据分析软件。Greenplum是EMC在2010年7月收购的一家开源数据仓库公司。
2011年5月,在收购了Engenio之后, NetApp推出与Hadoop应用结合的产品E5400存储系统。
2011年6月,Calxeda公司(之前公司的名字是Smooth-Stone)发起了“开拓者行动”,一个由10家软件公司组成的团队将为基于Calxeda即将推出的ARM系统上芯片设计的服务器提供支持。并为Hadoop提供低功耗服务器技术。
2011年6月,数据集成供应商Informatica发布了其旗舰产品,产品设计初衷是处理当今事务和社会媒体所产生的海量数据,同时支持Hadoop。
2011年7月,Yahoo!和硅谷风险投资公司 Benchmark Capital创建了Hortonworks 公司,旨在让Hadoop更加鲁棒(可靠),并让企业用户更容易安装、管理和使用Hadoop。
2011年8月,Cloudera公布了一项有益于合作伙伴生态系统的计划——创建一个生态系统,以便硬件供应商、软件供应商以及系统集成商可以一起探索如何使用Hadoop更好的洞察数据。
2011 年8月,Dell与Cloudera联合推出Hadoop解决方案——Cloudera Enterprise。Cloudera Enterprise基于Dell PowerEdge C2100机架服务器以及Dell PowerConnect 6248以太网交换机 。