一、MapReduce编程规范
1.1 Mapper阶段
- 用户自定义的Mapper要继承自己的父类
- Mapper的输入数据时KV对的形式(KV的类型可自定义)
- Mapper中的业务逻辑写在map() 方法中
- Mapper的输出数据是KV对的形式(KV的类型可自定义)
- map() 方法(MapTask进程)对每一个<K,V>调用一次
2.1 Reduce阶段
- 用户自定义的Reducer要继承自己的父类
- Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
- Reducer的业务逻辑写在reduce()方法中
- ReduceTask进程对每一组相同的k的<k,v>组调用一次reduce()方法
3.1 Driver阶段
相当于Yarn集群的客户端,用于提交我们整个儿程序到Yarn集群,提交的是封装了MapReduce程序相关运行参数的job对象
二、WordCount需求
输入数据:
输出数据:
三、WordCount案例实操
3.1 创建Maven并添加依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.2</version>
<