Hadoop基础之MapReduce
Hadoop基础之MapReduce
MapReduce
- MapReduce是hadoop中的一个非常重要的组件,用来处理海量数据计算的组件
- 由来:谷歌论文"MapReduce"
- 从论文的角度分析:MapReduce是一种思想
- 从技术的角度分析:MapReduce是一种分布式计算框架
软件框架与MapReduce规范
- 软件规范
- 软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求的基础功能的软件产品
- 思想上的规范
- map
- 最小化数据单元,并以键值对的形式传递到下一个阶段
- reduce
- 接收上一个阶段的数据,按照相同key进行合并数据,并且以键值对的形式输出
- 代码的规范
- Mapper类
- 实现map端的思想,把数据划分成最小的数据单元,并以键值对输出
- Reducer类
- 实现reduce思想的代码,将key相同的value值放在一起操作
- Driver类
- 相当于程序的入口,在这需要制定一些泛型和使用的类等信息
Mapper类
- 四个泛型
- keyIn:输入的元数据key的泛型
- 如果是默认的文本文档是LongWritable(偏移量)
- valueIn:输入的元数据value的泛型
- 如果默认的文本文档就是Text(每一行数据的具体内容)
- keyOut:输出的key的泛型
- 根据实际情况确定
- valueOut:输出的value的泛型
- 根据实际情况确定
- 四个方法
- setUp
- 执行mapper阶段的开始阶段,仅执行一次,一般用于初始化一些数据
- cleanUp
- 执行mapper阶段的结束阶段,仅执行一次,一般用于收尾工作
- run
- 默认的执行逻辑,如果没有特殊情况,不重写
- map
- 每行数据都执行一次map操作,一般来说,绝大多数的类都重写此方法
Reduce类
- 四个泛型
- 输入的元数据key的泛型
- 输入的数据key的泛型,是map端输出的泛型
- valueIn:输入的元数据value的泛型
- 输入的元数据value的泛型,是map端输出的泛型
- keyOut:输出的元数据key的泛型
- 输出的key的泛型,根据实际情况确定
- valueOut:输出的value的泛型,根据实际情况确定
- 输出的value的泛型,根据实际情况确定
- 四个方法
- setUp
- 执行reduce阶段的开始阶段,仅执行一次,一般用于初始化一些数据
- cleanUp
- 执行reduce阶段的结束阶段,仅执行一次,一般用于收尾工作
- run
- 默认的执行逻辑,如果没有特殊情况,不重写
- reduce
- 每个相同的key执行一次该操作
MapReduce序列化数据类型
JavaMapReduce
- 自定义序列化类型
- 在MapReduce中,如果普通的序列化类型无法满足要求时,需要单独定义一个序列化类型来使用
- 序列化类需要实现Writable接口或WritableComparable接口
byte | ByteWritable |
short | ShortWritable |
int | IntWritable |
long | LongWritable |
float | FloatWritable |
double | DoubleWritable |
char | CharWritable |
boolean | BooleanWritable |
String | Text |
Array | ArrayWritable |
null | NullWritable |
自定义序列化类型 |
如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com