Hadoop的MapReduce执行过程介绍.pdf

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、Map-Reduce 的逻辑过程 假设我们需要处理一批有关天气的数据,其格式如下: ?按照 ASCII 码存储,每行一条记录 ?每一行字符从 0 开始计数,第 15 个到第 18 个字符为年 ?第 25 个到第 29 个字符为温度,其中第 25 位是符号 +/- 我们现在需要统计出每年的最高温度。 Map-Reduce主要包括两个步骤: Map和 Reduce 每一步都有 key-value 对作为输入和输出: ?map 阶段的 key-value 对的格式是由输入的格式所决定的,如果是 默认的 TextInputFormat ,则每行作为一个记录进程处理,其中 key 为此行的开头相对于文件的起始位置, value 就是此行的字符文本 ?map 阶段的输出的 key-value 对的格式必须同 reduce 阶段的输入 key-value 对的格式相对应 对于上面的例子,在 map过程,输入的 key-value 对如下: 在 map 过程中,通过对每一行字符串的解析,得到年 - 温度的 key-value 对作为输出: 在 reduce 过程,将 map过程中的输出,按照相同的 key 将 value 放 到同一个列表中作为 reduce 的输入 在 reduce 过程中,在列表中选择出最大的温度,将年 - 最大温度的 key-value 作为输出: 其逻辑过程可用如下图表示: 2、编写 Map-Reduce 程序 编写 Map-Reduce程序,一般需要实现两个函数: mapper 中的 map函 数和 reducer 中的 reduce 函数。 一般遵循以下格式: 注: Reporter : Reporter 是用于 Map/Reduce应用程序报告进度(心跳) ,设定应用 级别的状态消息, 更新 Counters (计数器)的机制。 OutputCollector : OutputCollector 是一个 Map/Reduce 框架提供的用于收集 Mapper 或 Reducer 输出数据的通用机制 (包括中间输出结果和作业的输出 结果)。 对于上面的例子,则实现的 mapper如下: 实现的 reducer 如下: 注:代码中 LongWritable, IntWritable, Text 均是 Hadoop 中实 现的用于封装 Java 数据类型的类,这些类都能够被串行化从而便于 在分布式环境中进行数据交换,你可以将它们分别视为 long, int, String 的替代品 欲运行上面实现的 Mapper 和 Reduce,则需要生成一个 Map-Reduce 得任务 (Job) ,即初始化 Job 的过程,其基本包括以下三部分: ?输入的数据,也即需要处理的数据 ?Map-Reduce程序,也即上面实现的 Mapper和 Reducer ?此任务的配置项 JobConf 欲配置 JobConf ,需要大致了解 Hadoop运行 job 的基本原理: @..Hadoop 将 Job 分成 task 进行处理,共两种 task :map task 和 r

文档评论(0)

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

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

1亿VIP精品文档

相关文档