-
MapReduce概述
1.)源于google的MapReduce论文,论文发表于2004年
2.)Hadoop Map Reduce是Google Mapreduce 的克隆版本
3.)MapReduce优点:海量数据离线处理 & 易开发 & 易运行
4.)MapReduce缺点:实时流式计算 -
MapReduce编程模型-执行步骤
1.)准备map处理的输入数据
2.)Mapper处理
3.)Shuffle
4.)Reduce处理
5.)结果输出 -
核心概念
1.)Split:交由Map Reduce作业来处理的数据块,是MapReduce中最小的计算单元
2.)HDFS:block size 是HDFS中最小的存储单元 128M
3.)默认情况下:他们俩是一一对应的,也可以手动设置
一个完整的mapReduce程序在分布式运行时有三个类实例进程
- mrAppMater 负责整个程序的过程调度及状态协调。
- mapTask 负责map阶段的整个数据处理流程。
- reduceTask 负责reduce阶段的整个数据处理流程。
数据类型对比 Java vs Hadoop
image.png
-
map阶段
- 用户自定义的mapper要继承自己的父类。
- mapper的输入数据是KV对的形式(KV的类型可自定义)
- mapper中的业务逻辑写在map()方法中。
- mapper的输出数据是KV对的形式(KV的类型可自定义)
- map()方法(MapTask进程)对每一个<K,V>调用一次。
-
reducer阶段
- 用户自定义的reducer要结成自己的父类。
- reducer的输入数据类型对应mapper的输出数据类型,也是KV
- reducer的业务逻辑写在reducer()方法中。
- reduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法
- dirver阶段
相当于yarn集群的客户端,用于提交我们整个程序到yarn集群,提交的是封装类mapreduce 程序相关运行参数的job对象。
网友评论