Hadoop之MapReduce

一、概述

对比传统的并行编程框架

四个方面:集群的架构和容错性(一个节点故障前者会导致整个集群不工作后者不会)、硬件价格及扩展性(后者仅需要廉价的PC机即可)、编程和学习难度(前者难后者易)、适用场景

大数据分布式并行处理技术MapReduce,批处理模式的典型代表。

批处理:MapReduce、Spark(可以做迭代计算)spark支持迭代计算,这是与MapReduce最大的不同。

实时计算:流计算,storm、flume、flink

图计算:

查询分析技术:Hive

Hadoop MapReduce对谷歌的MapReduce进行了优化

1.1简单介绍

MapReduce策略和理念:MapReduce采用分而治之的策略。一共分为两个过程,Map过程和Reduce的过程

Map过程:输入字符串之后,Map会对其进行处理,将数据集进一步解析成K、V键值对。用户可以自己定义map 的过程。

Reduce过程:输入是Key、value对的集合,reduce可以对这个list进行一个汇总,求和,求完以后会输出一个key、value对。这个汇总,求和的过程也可以由用户自己定义。

MapReduce体系结构:Client客户端,JobTracker、TaskManager

Client客户端可以将用户编写的应用程序提交到JobTracker。

JobTracker(作业分发):负责任务的调度,监控

TaskTracker(任务调度器):执行具体的相关任务一般接收Jobtracker分发过来的任务。对任务进行调度

二、MapReduce的体系结构

Hadoop之MapReduce

 

Client:客户端,通过它来提交用户编写的应用程序到JobTracker端;Client用户通过它提供的一些接口去查看当前提交作业的运行状态。

JobTracker(作业跟踪器):资源监控、任务调度;监控其他的TaskTracker及当前正在运行job的健康状况;一旦探测到失败情况就把任务转移到其他节点并继续跟踪任务的执行流程和资源使用量。

TaskTracker(任务调度器):1执行Jobtracker发送过来的命令即具体的相关任务;2,把自己的资源使用情况向JobTracker发送以心跳的方式。

注意:TaskTracker通过槽(slot)的方式来衡量资源的使用情况,以slot方式调度资源

Task:(任务):

Hadoop之MapReduce

计算框架MR:

移动计算而不是移动数据

 

三、MapReduce的工作流程

Hadoop之MapReduce

输入是Key-Value,输出也是。

各个执行阶段

Hadoop之MapReduce

 

block块和split分片的区别:split过程是可以由用户自己定义的,split横跨整个block

分片的多少决定map的多少。

最优的reduce任务个数取决于集群中可用的reduce任务槽(slot)的数目。

InputHDFS

OutputHDFS

Hadoop之MapReduce

input

1、split

2、map

3、shuffing

4、reduce

5、output

 

Hadoop之MapReduce

四、shuffle过程原理

shuffler阶段:难点,在map和reduce中间的一个步骤:既包含map端的shuffle过程和reduce端的shuffle过程

Hadoop之MapReduce

Hadoop之MapReduce

 

可以把mapper的输出按照某种key值重新切分和组合成n份,把key值符合某种范围的输出送到特定的reduce

那里。

reduce端shffle任务

Hadoop之MapReduce

数据倾斜:一些节点数据很多,另外的节点数据很少。在reduce阶段可能会出现

多个reduce。

Copy 阶段、sort阶段(默认按照字典序)、reduce阶段

shuffle过程详解:

每个map task都要一个内存缓冲区默认100MB,存储map

的输出结果。

缓冲区快满时将其数据以临时文件的方式存到磁盘(spill to disk)

溢写是由单独线程来完成,不影响往缓冲区写map结果的线程。0.8默认

溢写线程启动后需要对这80MB空间内的key做排序。

五、MapReduce的应用程序执行过程

用户编写的程序-->程序部署到集群(程序分布到不同机器master机器和worker-->确定mapreduceworker是哪些节点-->空闲机器执行分片处理-->提交map任务(中间结果写入缓存)(磁盘满溢写到磁盘,这些数据都是经过shffle处理的过程)-->发送到远程reduce所在节点--->执行reduce过程--->输出文件

Hadoop之MapReduce

 

六、MapReduce的具体应用

MapReduce实现关系的自然连接