hadoop介绍(感谢SR前辈的建议).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hadoop平台技术介绍 潘司群 北京邮电大学计算机学院网络工程专业 soulpsq@ 摘要: 本文主要介绍了hadoop平台的两个关键技术,分布式文件系统(HDFS)和分布式计算系统(map/reduce)。通过介绍其技术演进、核心算法、主要应用场景、所能解决问题以及发展状况等来大致展开文章内容 ,为今后实践学习相关知识积累了一定的理论基础。我参考了很多文章,但在本文中并没有任何原文抄袭,所有语言都均由笔者自己组织,有部分数据(两到三处)为引用而来也注明了出处。与此同时,一定也会有很多解释欠妥甚至错误的地方,并且有很多原理理解得还很肤浅,无法做出更加深入的解释,这些都希望学长能够给出一些建议,我也希望在今后的实践中能加深对所学理论知识的理解。 引言: 随着google在文件系统(GFS)、数据库(BigTable)以及并行计算(MapReduce)领域的三大论文的问世,云计算也终于从一个模糊的概念走向了技术的实体化。不过google并没有再接再厉公布其技术细节与核心,于是就催生了hadoop这样一个开源平台的出现。说起hadoop, 不得不提一下它的创始人Doug Cutting,他是著名的全文检索引擎lucene(国内的很多项目都有该技术的影子)和搜索引擎nutch的发起者,当然它们也都是开源的。正是由于Doug Cutting等人的之前的工作,才使得我们能够有机会接触并学习到搜索引擎等曾经神秘莫测的技术。 总的来说,Hadoop其实就是google技术的开源平台,hadoop的分布式文件系统HDFS、数据库系统Hbase以及分布式计算系统Map/Reduce(这个名都没变···)就是对google的GFS, BigTalbe以及MapReduce的开源实现,在本文中,我主要介绍的是组成Hadoop的最为重要的HDFS和Map/Reduce两项关键技术。 一. 分布式计算框架Map/Reduce Map/Reduce是一个分布式的编程模型,它源自于函数式的编程思想,函数式编程并不是一种编程语言,也没有固定不变的模式,它很多的时候指的是一种编程的理念,在严格的函数式编程中,函数几乎被用于一切,甚至是最简单的变量计算,但是在实际中,函数式风格的代码往往是作为一部分而为整体程序来服务,有关于函数式编程更详细的内容,推荐阅读参考文章[4]。 让我们回到Map/Reduce, 顾名思义,MapReduce由两个过程组成,即map(映射)和reduce(规约), 并且map在前,reduce在后。让我们先举个简单的例子来解释这两个过程:一维数组M =[1, 2, 3, 4, 5]在乘2的条件下映射为[2, 4, 6, 8, 10],当继续进行数组元素求和时,则规约为30,整个过程其实就是将∑m[i]*2这样一个运算拆分成了两步来执行。从上面的例子我们了解到,MapReduce是一种先分后合的编程模式,即先将任务拆分成若干子任务,然后子任务分别执行,最后将所有子任务的执行结果进行合并规约得出最终的输出结果(0个或1个最终输出结果),这就是MapReduce编程模式的总体思路,实际运用中将会复杂得多。 在讲述具体的实现过程之前,我认为有必要对出现的一些相关术语做一些简单的说明,这样会方便大家顺利地理解后面的内容。Hadoop的MapReduce和Google的MapReduce就如其名基本不变一样(就是前缀公司不同···),框架结构基也本都是一样的,但本着开源就要开得不一般,就要不走寻常路的的出发点,hadoop还是将其中明明一样的东西硬给安了个不一样的名字,可能是因为我最开始读的是Google的文章而先入为主了,导致再去读hadoop的相关文章时,总觉得hadoop的术语命名又冗长又不形象,所以在这里就先把术语统一下,以防以后阅读其他文章时弄乱,我在网上找到了一个术语对照表,觉得还不错,所以就直接拿来主义了哈。 中文翻译 Google术语 Hadoop术语 相关解释 作业 Job Job 用户的每一个计算请求,就称为一个作业。 作业服务器 Master JobTracker 用户提交作业的服务器,同时,它还负责各个作业任务的分配,管理所有的任务服务器 任务服务器 Worker Tasktracker Google的命名很贴切,就是任劳任怨的工人,负责执行具体的任务 任务 Task Task 每一个作业都需要拆分开,交由多个服务器来完成,拆分出来的执行单位,就称为任务 总算进入了正题,下面就没有什么能妨碍我们去探索MapReducede的秘密了! MapReduce编程模型中的函数接口是无数key/value pair(键值

文档评论(0)

yyh892289 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档