Mapreduce编程

1. MapReduce核心思想

Mapreduce编程_第1张图片

(1)分布式的运算程序往往需要分成只少2个阶段

(2)第一个阶段的MapTask并发实例。完全并行运行,互补相干

(3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。

(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,只能多个MapReduce程序,串行运行。

2. MapReduce进程

一个完整的MapReduce程序在分布式运行时有三类实例进程

(1)MrAppMaster:复制整个程序的过程调度及状态协调

(2)MapTask:负责Map阶段的整个数据处理流程

(3)ReduceTask:负责Reduce阶段的整个数据处理流程

3. MapReduce编程规范

用户编写的程序分成三个部分:Mapper、Reduce和Driver

1.Mapper阶段:

(1)用户自定义的Mapper要继承自己的父类

(2)Mapper的数据数据是KV对的形式(KV的类型可自定义)

(3)Mapper中的业务逻辑写在map()方法中

(4)Mapper的输出数据是KV对的形式(KV的类型可自定义)

(5)map()方法(MapTask进程)对每一个调用一次

2. Reduce阶段

(1)用户自定义的Reduce要继承自己的父类

(2)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV

(3)Reducer的业务逻辑写在reduce()方法中

(4)ReduceTask进程对每一组相同的k的组调用一次reduce()方法

3.Driver阶段

相当于YARN集群的客户端,用于提交我们整个程序到YARN 集群,提交的是封装了MapReduce程序相关运行参数的job对象

你可能感兴趣的:(Hadoop,mapreduce,大数据,数据库,hadoop)