MapReduce
1. 简介
1.1 MapReduce是Hadoop中进行分布式计算的框架
1.2 MapReduce会将整个计算拆分为
MapReduce在计算的时候,会将要处理的文件进行切片,注意:切片和切块不一样
Map阶段:每一个切片都会对应一个MapTask
初步理解:MaoReduce在处理数据时,会将数据切分成片
Map阶段
- MapReduce在处理数据时,会将数据切分成片
- 数据将会被分片处理,处理的出来的数据类型是:键值对(k,v)
- 多个分片处理完结果后,将相同的键对应,以及他们的值放到一组
Reduce阶段
键这些Map的数据交给Reduce处理,Reduce将数据进行汇总
2.实际操作
代码实现:
结构图:
WordCountMapper.java
package MapRduces01;
/**
* 代码实现功能,统计字符串
*/
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordCountMapper
extends Mapper<LongWritable,Text,Text,IntWritable> {
/*
* Mapper是Hadoop的顶级父类
* Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
* MapReduce要求被传输的类型必须能够被序列化
* MapReduce的序列化机制默认使用的是AVRO
* KEYIN:输入键的类型,现阶段这个泛型表示行偏移量,是以字节来计算的
* VALUEIN:指的是输入类型的值,现阶段表示读取这一行的数据
* KEYOUT:输出的键的类型
* VALUEOUT:输出的值的类型
*/
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text