欢迎来到天天文库
浏览记录
ID:6045838
大小:111.00 KB
页数:12页
时间:2018-01-01
《用 hadoop 进行分布式数据处理,第 3 部分》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Hadoop进行分布式数据处理,第3部分:应用程序开发为Hadoop开发RubyMapReduce应用程序M.TimJones,自由作者简介: 通过已经获得的在单节点和多节点体系结构中Hadoop的配置、安装以及使用的经验,您现在可以转到在Hadoop基础设施内开发应用程序的任务上。本文是系列文章的最后一篇,其通过简单的mapper和reducer应用程序探索了HadoopAPI和数据流并演示了它们的使用。查看本系列更多内容本文的标签: distribution,hadoop,mapreduce,存储,应用开发,进行分布式数据处理标记本文!
2、发布日期: 2010年8月09日级别: 中级其他语言版本: 英文访问情况: 8550次浏览评论: 1 (查看
3、 添加评论-登录)平均分(14个评分)为本文评分联系TimTim是我们最受欢迎、最多产的作者之一。浏览developerWorks上Tim的所有文章。查看Tim的个人信息,并在MydeveloperWorks中与Tim、其他作者和各位读者联系。此系列的前两篇文章专注于单节点和多节点集群的Hadoop安装及配置。最后这篇文章探索了Hadoop编程—特别是在Ruby语言中map和reduce应用程序开发。我之所以选择Ruby,首先是因为
4、,它是一个您应该知道的很棒的面向对象的脚本语言,其次,您将在参考资料部分发现很多参考,其中包括解决Java™和Python语言的教程。通过这种MapReduce编程的探索,将向您介绍流式应用程序编程接口(ApplicationProgrammingInterface,API)。此API提供方法以便在Java语言以外的多种语言中开发应用程序。让我们开始简要介绍一下map和reduce(从功能的角度考虑),然后再进一步钻研Hadoop编程模型及其体系结构和用来雕刻、分配、管理工作的元素。map和reduce的起源是什么功能性元素激发了MapRed
5、uce编程范例的创立?在1958年,JohnMcCarthy发明了名为Lisp的语言,其实现了数值和符号计算,但在递归形式下此语言非常不同于现在所使用的大多数语言。(在维基百科全书上记述着Lisp那段迷人的历史,同时包括一个有用的教程—值得您花费时间来阅读。)Lisp最先是在IBM®704中实现的,IBM®704是第一种大规模生产的计算机,也支持其他旧的语言,如FORTRAN。map函数,源于功能性语言(如Lisp)但如今在其他语言中也很常见,其中包含了一系列元素的函数的应用程序。这意味着什么?清单1通过SchemeShell(SCSH)提供
6、解释会话,即一个Lisp衍生。第一行定义一个名为square的函数,该函数可接受参数并发出其平方根。下一行说明map函数的使用。如图所示,通过map,为已应用的函数提供您的函数和一系列元素。结果是一个包含平方元素的新列表。清单1.SCSH上的map函数演示>(definesquare(lambda(x)(*xx)))>(mapsquare'(1357))'(192549)>Reduce也适用于列表但是通常将列表缩减为标量值。清单2中提供的示例说明用于将列表缩减为标量的其他SCSH函数—在这种情况下,用(1+(2+(3+(4+(5)))))的格
7、式汇总值的列表。请注意这是典型的功能性编程,取决于迭代上的递归。清单2.SCSH上的reduce演示>(define(list-sumlis)(if(null?lis)0(+(carlis)(list-sum(cdrlis)))))>(list-sum'(12345))15>有趣的是要注意递归与迭代在命令性语言中同样高效,因为递归在幕后被转化成迭代。回页首Hadoop的编程模型Google引用MapReduce的概念作为处理或生成大型数据集的编程模型。在规范模型中,map函数处理键值对,这将得出键值对的中间集。然后reduce函数会处理这些中
8、间键值对,并合并相关键的值(请参考图1)。输入数据使用这样一种方法进行分区,即在并行处理的计算机集群中分区的方法。使用相同的方法,已生成的中间数据将被并行处理,这是处理大量数据的理想方法。图1.MapReduce处理的简化视图对于快速刷新器来说,查看图1的体系结构,从map和reduce角度来进行字数统计(因为您将在本文中开发map和reduce应用程序)。在提供输入数据时(进入Hadoop文件系统[HDFS]),首先分段,然后分配给map工作线程(通过作业跟踪器)。虽然图2中的示例显示了一个被分段的简短语句,但是分段的工作数量通常在128M
9、B范围内,其原因是建立工作只需要很少的时间,因为有更多的工作要做,以便最大限度地减少这种开销。map工作线程(在规范的示例中)将工作分割成包含已标记单词和初始值(在
此文档下载收益归作者所有