- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                用 Hadoop              进行分布式数据处理,第 3                                      部 
分:  应用程序开发 
此系列的前两篇文章 专注于单节点和多节点集群的 Hadoop 安装及配置。最后 
这篇文章探索了 Hadoop 编程 — 特别是在 Ruby 语言中 map 和 reduce 应用 
程序开发。我之所以选择 Ruby,首先是因为,它是一个您应该知道的很棒的面 
向对象的脚本语言,其次,您将在 参考资料 部分发现很多参考,其中包括解决 
Java™ 和 Python 语言的教程。通过这种 MapReduce 编程的探索,将向您介绍 
流式应用程序编程接口(Application Programming Interface,API)。此 API 
提供方法以便在 Java 语言以外的多种语言中开发应用程序。 
让我们开始简要介绍一下 map 和 reduce (从功能的角度考虑),然后再进一步 
钻研 Hadoop 编程模型及其体系结构和用来雕刻、分配、管理工作的元素。 
map 和 reduce 的起源 
是什么功能性元素激发了 MapReduce 编程范例的创立?在 1958 年,John 
McCarthy 发明了名为 Lisp 的语言,其实现了数值和符号计算,但在递归形式 
下此语言非常不同于现在所使用的大多数语言。(在维基百科全书上记述着 Lisp 
那段迷人的历史,同时包括一个有用的教程 — 值得您花费时间来阅读。)Lisp 
最先是在 IBM® 704 中实现的,IBM® 704 是第一种大规模生产的计算机,也支 
持其他旧的语言,如 FORTRAN。 
map 函数,源于功能性语言(如 Lisp)但如今在其他语言中也很常见,其中包 
含了一系列元素的函数的应用程序。这意味着什么? 清单 1 通过 Scheme 
Shell (SCSH) 提供解释会话,即一个 Lisp 衍生。第一行定义一个名为 square 
的函数,该函数可接受参数并发出其平方根。下一行说明 map 函数的使用。如 
图所示,通过 map,为已应用的函数提供您的函数和一系列元素。结果是一个包 
含平方元素的新列表。 
清单 1. SCSH 上的 map 函数演示 
 (define square (lambda (x) (* x x))) 
 (map square (1 3 5 7)) 
(1 9 25 49) 
 
Reduce 也适用于列表但是通常将列表缩减为标量值。清单 2 中提供的示例说明 
用于将列表缩减为标量的其他 SCSH 函数 — 在这种情况下,用 (1 + (2 + (3 + 
(4 + (5))))) 的格式汇总值的列表。请注意这是典型的功能性编程,取决于迭 
代上的递归。 
清单 2. SCSH 上的 reduce 演示 
 (define (list-sum lis) (if (null? lis) 0 (+ (car lis) (list-sum (cdr 
lis))))) 
 (list-sum (1 2 3 4 5)) 
15 
 
有趣的是要注意递归与迭代在命令性语言中同样高效,因为递归在幕后被转化成 
迭代。 
回页首 
Hadoop 的编程模型 
Google 引用 MapReduce 的概念作为处理或生成大型数据集的编程模型。在规范 
模型中,map 函数处理键值对,这将得出键值对的中间集。然后 reduce 函数会 
处理这些中间键值对,并合并相关键的值(请参考图 1)。输入数据使用这样一 
种方法进行分区,即在并行处理的计算机集群中分区的方法。使用相同的方法, 
已生成的中间数据将被并行处理,这是处理大量数据的理想方法。 
图 1. MapReduce 处理的简化视图 
对于快速刷新器来说,查看图 1 的体系结构,从 map 和 reduce 角度来进行字 
数统计(因为您将在本文中开发 map 和 reduce 应用程序)。在提供输入数据时 
 (进入Hadoop 文件系统 [HDFS]),首先分段,然后分配给 map 工作线程(通 
过作业跟踪器)。虽然 图 2 中的示例显示了一个被分段的简短语句,但是分段 
的工作数量通常在 128MB 范围内,其原因是建立工作只需要很少的时间,因为 
有更多的工作要做,以便最大限度地减少这种开销。map 工作线程(在规范的示 
例中)将工作分割成包含已标记单词和初始值(在此情况下是 1)的单个矢量。 
在 map 任务完成时(如通过任务跟踪器在 Hadoop 中所定义的),提供工作给 
reduce 工作线程。通过代表所发现的键的数量的值,reduce 工作线程将许多键 
缩减为一个惟一
                您可能关注的文档
最近下载
- 2023年资料员资格考试题库答案下载.docx
 - 人教版小学语文四年级上册第二单元试卷及答案.pdf VIP
 - 安全与急救(四川警察学院)超星尔雅学习通网课章节测试答案.doc VIP
 - 铁总工电〔2018〕125号普速铁路桥隧建筑物修理规则.docx VIP
 - 煤岩复合体能量传递特性与动力灾害关联性.docx VIP
 - 高血压的危害及有效的降压方法.pptx VIP
 - 生涯发展报告.pdf VIP
 - 数学活动 月历中的奥秘及和为定值的两数积的规律 2025-2026学年人教版数学八年级上册.docx
 - 2026教育部教育技术与资源发展中心(中央电化教育馆)招聘3人(非事业编)笔试备考试题及答案解析.docx VIP
 - 弱电施工方案.doc VIP
 
原创力文档
                        

文档评论(0)