大数据处理与分析

  1. 掌握分布式并行编程框架MapReduce
  2. 掌握基于内存的分布式计算框架Spark
  3. 理解MapReduce的工作流程、Spark运行原理
  4. 熟悉机器学习概念

一.MapReduce

 Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集

因此,对于MapReduce,可以简洁地认为,它是一个软件框架,海量数据是它的“菜”,它在大规模集群上以一种可靠且容错的方式并行地“烹饪这道菜”。

1. MapReduce做什么(分散任务,汇总结果!)

2.MapReduce模型简介

MapReduce核心函数:

MapReduce之策略:

MapReduce之理念:

计算向数据靠拢而不是数据向计算靠拢

要完成一次数据分析时,选择一个计算节点,把运行数据分析的程序放在计算节点上运行

然后把它所涉及的数据,全部从各个不同节点上面拉过来,传输到计算发生的地方

二.MapReduce之Map函数和Reduce函数

Map函数

Reduce函数

三.MapReduce的工作流程

1.工作流程

2.各个执行的阶段

1.从HDFS里加载文件读取文件-(IputFormat)对输入进行格式验证,然后,将输入文件切分为逻辑上的多个(IputSplit)实际是逻辑切分概念,只是记录了要处理的数据的位置和长度。

2.RR根据InputSplit中的信息来处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的键值对,输入给Map任务。

3.中间结果shuffle(洗牌),分区,排序,合并,归并,从无序<key,value>到有序的<key,value-list>

4.Reduce 执行用户定义的逻辑,输出结果给到OutputFormat模块

5.OutputFormat模块会验证输出目录是否已经存在以及输出结果类型是否符合配置文件中的配置类型,如果都满足,就输出Reduce的结果到分布式文件系统(如HDFS)。

3.MapReduce核心环节-Shuffle过程

所谓Shuffle,是指对Map输出结果进行分区、排序、合并等处理并交给Reduce的过程。因此,Shuffle过程分为Map端的操作和Reduce端的操作,主要执行以下操作。

Map端的Shuffle过程

a输入数据和执行Map任务

b写入缓存

c溢写(分区,排序和合并)

d文件归并

Reduce端的Shufflu过程
  • Reduce任务通过RPC向JobTracker询问Map任务是否已经完成,若完成,则领取数据
  • Reduce领取数据先放入缓存,来自不同Map机器,先归并,再合并,写入磁盘
  • 多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的
  • 当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce

MapReduce应用程序执行过程

四.实例分析:WordCount

  1. WordCount程序任务
  2. WordCount设计思路
  3. 一个WordCount执行过程的实例

4.1WordCount程序任务

一个WordCount程序任务

4.2WordCount设计思路

首先,需要检查WordCount程序任务是否可以采用MapReduce来实现
其次,确定MapReduce程序的设计思路
最后,确定MapReduce程序的执行过程

4.3一个WordCount执行过程的实例

Map过程示意图

用户没有定义Combiner时的Reduce过程示意图

用户定义Combiner时的Reduce过程示意图

  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值