本节和大家一起学习一下Hadoop, 一个分布式系统基础架构,由Apache基金会开发的,在这里和大家分享一下它的开源实现以及Hadoop研究方面的内容,希望通过本节的学习大家对Hadoop这一概念有清楚的认识。
Hadoop概念
一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。
开源实现
Hadoop是项目的总称,起源于作者儿子的一只吃饱了的大象的名字。主要是由HDFS、MapReduce和Hbase组成。
HDFS是GoogleFileSystem(GFS)的开源实现。
MapReduce是GoogleMapReduce的开源实现。
HBase是GoogleBigTable的开源实现。
这个分布式框架很有创造性,而且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。因此Apache基金会用Java实现了一个开源版本,支持Fedora、Ubuntu等Linux平台。目前Hadoop受到Yahoo的支持,有Yahoo员工长期工作在项目上,而且Yahoo内部也准备使用Hadoop代替原来的的分布式系统。
Hadoop实现了HDFS文件系统和MapRecue。用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job即可自动分布式运行。
目前Release版本是0.20.1。还不成熟,但是已经集群规模已经可以达到4000个节点,是由Yahoo!实验室中构建的。下面是此集群的相关数据:
•4000节点
•2xquadcoreXeons@2.5ghzper节点
•4x1TBSATADiskper节点
•8GRAMper节点
•千兆带宽per节点
•每机架有40个节点
•每个机架有4千兆以太网上行链路
•RedhatLinuxAS4(Nahantupdate5)
•SunJavaJDK1.6.0_05-b13
•所以整个集群有30000多个CPU,近16PB的磁盘空间!
HDFS把节点分成两类:NameNode和DataNode。NameNode是唯一的,程序与之通信,然后从DataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。
MapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。
HDFS和MapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。
Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFS,HadoopDistributedFileSystem)。
HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()构造一个节点,具体业务功能还需自己实现。针对HDFS的业务则为数据流的读写,NameNode/DataNode的通信等。
MapReduce主要在org.apache.hadoop.mapred,实现提供的接口类,并完成节点通信(可以不是hadoop通信接口),就能进行MapReduce运算。
目前这个项目还在进行中,还没有到达1.0版本,和Google系统的差距也非常大,但是进步非常快,值得关注。
另外,这是云计算(CloudComputing)的初级阶段的实现,是通向未来的桥梁。
Hadoop的发音音标[hædu:p]
Hadoop研究
Hadoop是原Yahoo的DougCutting根据Google发布的学术论文研究而来。DougCutting给这个Project起了个名字,
就叫Hadoop。其实Hadoop也是DougCutting的孩子的玩具的名字,一个可爱的黄色小象。
现在,DougCutting在Cloudera公司。Cloudera的Hadoop是商用版。不同开Apache的开源版。
如果要研究Hadoop的话,在下载Apache的版本是一种不错的选择。
只研究Apache版本的,不足以对Hadoop的理念理解。再对Cloudera版本的研究,会更上一层楼。
现在美国的AsterData,也是Hadoop的一个商用版,AsterData的MPP理念,ApplicationsWithin理念等等,
也都是值得研究。
Google的成功已经说明了RDB的下一代就是Nosql(NotOnlySQl),比说说GFS,Hadoop等等。
Hadoop作为开源的版本来说,其魅力更是不可估量。
上文中说到Google的学术论文,其中包涵有
GoogleFileSystem(大规模分散文件系统)
MapReduce(大规模分散FrameWork)
BigTable(大规模分散数据库)
Chubby(分散锁服务)
这四大InfrastructureSoftware的陈述。
说起Google的GFS和Hadoop,不仅让我想起了,Unix和Linux。
由Unix而来的开源Linux,现在更是家喻户晓了。很多大型公司都起用Linux作为服务器。
相信不久的将来,Hadoop会像Linux一样,席卷全球,惠而全球。
【编辑推荐】