`
阅读更多

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

分享到:
评论

相关推荐

    hadoop2.7.3 hadoop.dll

    在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....

    Hadoop权威指南 中文版

    本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统;hadoop的i...

    Hadoop下载 hadoop-2.9.2.tar.gz

    Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo...

    Hadoop下载 hadoop-3.3.3.tar.gz

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

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf...

    hadoop-3.3.4 版本(最新版)

    Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...

    hadoop2.8.5-windows本地开发

    内容概要:windows环境下添加snappy源码,并对2.8.5的apache版本hadoop包进行编译,生成指定的hadoop.dll、snappy.dll文件,方便Windows环境下利用idea工具进行Hadoop、Spark的local模式下代码调试。 版本更新:...

    hadoop winutils 多个版本最全大合集dll,winutils.exe

    hadoop的hadoop.dll和winutils.exe “ Could not locate executable null\bin\winutils.exe in the Hadoop binaries”解决方法:把winutils.exe加入你的hadoop-x.x.x/bin下 包含hadoop.dll, winutils.exe hadoop-...

    Hadoop开发环境的插件hadoop-eclipse-plugin-2.10.1

    Hadoop Eclipse是Hadoop开发环境的插件,用户在创建Hadoop程序时,Eclipse插件会自动导入Hadoop编程接口的jar文件,这样用户就可以在Eclipse插件的图形界面中进行编码、调试和运行Hadop程序,也能通过Eclipse插件...

    Cloudera Hadoop 5&Hadoop高阶管理及调优课程

    Cloudera Hadoop 5&Hadoop高阶管理及调优课程,完整版,提供课件代码资料下载。 内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1、Hadoop2.0高阶运维,包括Hadoop节点增加删除、HDFS和...

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    Hadoop集群程序设计与开发

    《Hadoop集群程序设计与开发(数据科学与大数据技术专业系列规划教材)》系统地介绍了基于Hadoop的大数据处理和系统开发相关技术,包括初识Hadoop、Hadoop基础知识、Hadoop开发环境配置与搭建、Hadoop分布式文件系统、...

    hadoop-3.1.3安装包

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合...

    hadoop配置资源 ,hadoop-3.0.0,hadoop.dll,winutils

    调用保存文件的算子,需要配置Hadoop依赖 将文件夹中的 hadoop-3.0.0 解压到电脑任意位置 在Python代码中使用os模块配置:os.environ[‘HADOOP_HOME’] = ‘HADOOP解压文件夹路径’ winutils.exe,并放入Hadoop解压...

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...

    Hadoop The Definitive Guide PDF

    书名:Hadoop The Definitive Guide 语言:英文 The rest of this book is organized as follows. Chapter 2 provides an introduction to MapReduce. Chapter 3 looks at Hadoop filesystems, and in particular ...

    Hadoop.Essentials.1784396680

    Title: Hadoop Essentials Author: Shiva Achari Length: 172 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-04-24 ISBN-10: 1784396680 ISBN-13: 9781784396688 Delve ...

    基于Hadoop图书推荐系统源码+数据库.zip

    基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书...

    hadoop-lzo-0.4.20.jar

    hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.20.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.20.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...

    hadoop-eclipse-plugin-2.10.0.jar

    Eclipse集成Hadoop2.10.0的插件,使用`ant`对hadoop的jar包进行打包并适应Eclipse加载,所以参数里有hadoop和eclipse的目录. 必须注意对于不同的hadoop版本,` HADDOP_INSTALL_PATH/share/hadoop/common/lib`下的jar包...

Global site tag (gtag.js) - Google Analytics