hadoop

Hadoop的概要介绍

Hadoop,是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。该平台使用的是面向对象编程语言Java实现的,具有良好的可移植性。
 

Hadoop的发展历史

       Hadoop是Doug Cutting(Apache Lucene创始人)开发的使用广泛的文本搜索库。Hadoop起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是由Lucene项目的一部分。那么我们接下来就先来看一下Nutch的一些发展状况,使得我们对Hadoop的前身有更多的了解。
Nutch项目开始于2002年,一个可工作的抓取工具和搜索系统很快浮出水面。但开发人员很快就意识到,他们的这个架构将无法扩展到拥有数十亿网页的网络。在2003年发表的一篇描述Google分布式文件系统(Google File System,简称GFS)的论文为他们提供了及时的帮助,文中称Google正在使用此文件系统。 GFS或类似的东西,可以解决他们在网络抓取和索引过程中产生的大量的文件的存储需求。具体而言,GFS会省掉管理所花的时间,如管理存储节点。在2004年,他们开始开发一个开放源码的应用,即Nutch的分布式文件系统(NDFS),也就是后来耳熟能详的HDFS的前身。
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集群上。至此以后,Hadoop这个词在业界迅速升温,当大家提到云计算的时候就自然而然的想起这个词。

那么,接下来让我见识一下Hadoop这个分布式计算框架的威力吧!2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。运行在一个910节点的群集,Hadoop在209秒内排序了1 TB的数据(还不到三分半钟),击败了前一年的297秒冠军。同年11月,谷歌在报告中声称,它的MapReduce实现执行1TB数据的排序只用了68秒。 在2009年5月,有报道宣称Yahoo的团队使用Hadoop集群对1 TB的数据进行排序只花了62秒时间。就这样,奇迹一点一滴的在被它不断地创造出来~

 

Hadoop的关键技术

       可以说,Hadoop发展到今天的地步,在很大程度上得益于Google的分布式集群的启发。Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。即使是分布式开发的新手也可以迅速使用Google的基础设施。核心组件有3个:

  1、GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。Google根据自己的需求对它进行了特别优化,包括:超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等。GFS把文件分成64MB的块,分布在集群的机器上,使用Linux的文件系统存放。同时每块文件至少有3份以上的冗余。中心是一个Master节点,根据文件索引,找寻文件块。详见Google的工程师发布的GFS论文。

  2、MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。

  3、BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。

  以上三个设施Google均有论文发表。正是因为有了以上的三项核心技术,才使得Google的分布式框架很有创造性、扩展性,而且在系统吞吐量上有很大的竞争力。
       结合上面讲的一些背景,再来看一下Hadoop这个架构的核心技术吧!
       主要是由HDFS、MapReduce和Hbase组成。HDFS是Google File System(GFS)的开源实现。MapReduce是Google MapReduce的开源实现。HBase是Google BigTable的开源实现。这里就不多说了,具体的每个核心技术的原理会在后续的文章里面一点一点的介绍,毕竟也是刚开始学,边学边成长吧!
 

Hadoop的一些特点

       1、 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。在不保证低延时的前提下,具有相当大的吞吐量,非常适合海量数据的运算。
2、 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。而且每个节点都是运行在开源操作系统Linux上面的。
3、 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。
4、 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。
 

Hadoop的不足之处

       1、 该框架设计的初衷是针对海量数据的运算处理的问题。因此对于一些数据量很小的处理没有任何优势可言,甚至还不如单机串行的效果,性能也完全体现不出来。
       2、 既然是海量数据的处理,优先考虑的是该系统的吞吐量等性能问题。所以也很难满足平常的低时延的需求,这点是不可避免的,只能说想办法尽量去权衡两者,进而优化。
       3、 集群中存在大量的机器,所以节点故障是不可避免的。在Hadoop中有两种类型的结点:namenode和datanode。Hadoop集群采取的master/slave结构,分别对应namenode和datanode两种类型。Datanode故障一般是不会影响整个系统的,这个和它的存储策略有关。但是namenode故障是是极大的问题,如果namenode挂掉了,那问题就很严重。而且namenode的内存限制也是整个系统的瓶颈,这个在这里就不多说,后面随着慢慢的了解就知道了。
       4、 其文件系统设计的前提是一次写入多次读取的情况,因此我们是无法修改某条详细的数据,只能overwrite全部的数据,或者是在文件末尾追加数据。
       5、 集群内部是通过tcp/ip协议进行通信的,所以网络带宽也会成为系统的瓶颈之一。
       6、 系统内部的调度策略。在使用了Hadoop一段时间之后,感觉它的job调度策略不是很完善,没能充分利用集群资源展现出其全部的性能。
7、 采用Java实现。Java的IO处理虽然没有性能瓶颈,但是对于CPU密集型的任务是一个噩耗。这点可以通过对比HBase和Hypertable两个开源的Bigtable实现来做初步的验证。
       8、 开源项目。开源本身是一柄双刃剑,它方便了大多数人,但是对于一个有一定规模的公司,项目发展方向的把握,技术保密和支持等都是采用Hadoop这种开源项目必须考虑的问题。另外,Hadoop作为一个比较新的项目,性能和稳定性的提升还需要一定时间。
       9、安全问题。如果对外提供服务就要对外开放端口,那就有可能成为被攻击的目标,所以这个问题在以后的商业应用中显得尤为重要。虽然并不清楚Hadoop的安全程度到底如何,但是这个是没有止境的。道高一尺,魔高一丈。
       10、任然使用的是行存储。从相关资料上了解到列存储在海量数据处理方面的优势,觉得未来在这方面会有所改变。
 

Hadoop的发展前景

       我本人以前其实从来没接触过分布式计算这一块,偶然的一个机会来到淘宝的数据平台实习,才知道有这么个强大的东西存在。虽然它只是一个开源的项目,并不是很成熟。但是有这么多的强人在不断地做贡献,另外还有很多互联网巨头投入了巨大的人力物力来开发。 

       我个人还是很看好这个分布式计算平台未来的前景。而且很多大公司也在使用Hadoop,像国内的淘宝、百度、腾讯,国外的雅虎、亚马逊、Facebook等。事实证明这个分布式平台很有潜力的,虽然目前还是存在各种各样的不足和缺陷,但是有那么多人在为之付出,总是能够不断改进的。玉不琢不成器嘛~呵呵
 

个人随想

       现在回想当年高考完了填志愿,好像当时对计算机一窍不通啊~但是那时候觉得计算机很强大,也许会改变未来人们的生活方式。所以最后就这么小不小心成了一个搞it的小菜鸟。不过既然选择了这行,就坚持下去吧!也不能说对技术特别痴迷,但是还是希望自己成为一个技术牛人嘛~

       以前其实很少做笔记,作总结,再加上平常学到的东西也很少用,最后时间久了什么都忘了。所以这次淘宝的实习转正面试的悲剧是个教训。积累是成长的必须过程。以后有空就多就经常去学习,思考,总结。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/husthcb/archive/2010/09/05/5864769.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值