MapReduce:并行计算框架
来源:互联网 发布:c语言游戏编程 编辑:程序博客网 时间:2024/04/26 18:12
MapReduce 是 Hadoop 的核心组成,是专用于进行数据计算的。重点掌握实现 MapReduce 算法的步骤,掌握 map、reduce 函数的特点、如何写函数。
如果我们把 MapReduce 拆开看,就是两个单词 map 和 reduce。map 翻译为“映射” ,reduce 翻译为“归约” 。
Hadoop中的Map和Reduce
1,在 Hadoop 中 ,map 函 数 位 于 内 置 类 org.apache.hadoop.mapreduce.Mapper<KEYIN,VALUEIN, KEYOUT, VALUEOUT>中,reduce 函数位于内置类 org.apache.hadoop.mapreduce.Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>中。 我们要做的就是覆盖 map 函数和 reduce 函数。
对于 Hadoop 的 map 函数和 reduce 函数,处理的数据是键值对,也就是说 map 函数接收的数据是键值对,两个参数;输出的也是键值对,两个参数;reduce 函数接收的参数和输出的结果也是键值对。
现在再看一下 Mapper 类,有四个泛型,分别是 KEYIN、VALUEIN、KEYOUT、VALUEOUT,前面两个 KEYIN、 VALUEIN 指的是 map 函数输入的参数 key、 value 的类型; 后面两个 KEYOUT、VALUEOUT 指的是 map 函数输出的 key、value 的类型。
源码中的Mapper.map
/** * Called once for each key/value pair in the input split. Most applications * should override this, but the default is the identity function. */ @SuppressWarnings("unchecked") protected void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException { context.write((KEYOUT) key, (VALUEOUT) value); }
源码中输入参数 key、value 的类型就是 KEYIN、VALUEIN,每一个键值对都会调用一次 map 函数。在这里,map 函数没有处理输入的 key、value,直接通过 context.write(…)方法输出了,输出的 key、value 的类型就是 KEYOUT、VALUEOUT。这是默认实现,通常是需要我们根据业务逻辑覆盖的
2,接下来看一下 Reducer 类,也有四个泛型,同理,分别指的是 reduce 函数输入的 key、value
类型,和输出的 key、value 类型。看一下 reduce 函数定义/** * This method is called once for each key. Most applications will define * their reduce class by overriding this method. The default implementation * is an identity function. */ @SuppressWarnings("unchecked") protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context ) throws IOException, InterruptedException { for(VALUEIN value: values) { context.write((KEYOUT) key, (VALUEOUT) value); } }
reduce 函数的形参 key、value 的类型是 KEYIN、VALUEIN。要注意这里的value 是存在于java.lang.Iterable<VALUEIN>中的,这是一个迭代器,用于集合遍历的,意味着 values 是一个集合。reduce 函数默认实现是把每个 value 和对应的 key,通过调用context.write(…)输出了,这里输出的类型是 KEYOUT、VALUEOUT。通常我们会根据业务逻辑覆盖 reduce 函数的实现。
- MapReduce:并行计算框架
- MapReduce并行计算框架介绍
- Hadoop MapReduce并行编程框架
- 并行计算框架 ParallelPython
- 利用MapReduce计算框架实现谷歌(PR值)PageRank算法并行实现
- 五种基于 MapReduce 的并行计算框架介绍及性能测试
- MapReduce分布式计算框架
- 分布式计算框架MapReduce
- Hadoop计算框架Mapreduce
- 《云计算》教材试读:并行数据处理MapReduce
- MapReduce数据并行计算模型介绍
- 关于hive查询与MapReduce并行计算
- MapReduce并行编程模型和框架
- Gearman 并行分布式计算框架
- 分布式计算框架MapReduce简介
- Hadoop之MapReduce计算框架
- MapReduce和HPC集群并行计算优劣对比
- 分布式文件系统,NoSQL数据库,并行计算框架
- 用OpenSWAN做Linux下的IPSec VPN的详细配置指南
- 蓝桥杯软件大赛练习系统——基础练习 十进制转十六进制
- 湖南11省赛【A】 一二三
- Oracle基础知识笔记(9) 表的创建及管理
- 山东科技大学现最牛考研 9个宿舍40人考研全成功
- MapReduce:并行计算框架
- js里面正则表达式,匹配字符,不断更新
- C#用SerialPort实现串口通讯
- Delphi中画一个矩形
- 系统托盘图标
- [转]JVM调优总结
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- resteasy 统一的异常处理handler
- object c NSNumber