【博学谷学习记录】超强总结,用心分享|MapReduce相关知识点汇总

【博学谷学习记录】超强总结,用心分享|MapReduce相关知识点汇总

MapReduce的思想核心是“先分再合,分而治之”。即把一个复杂的问题,按照一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成整个问题的结果。其中,Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。Reduce负责“合”,即对map阶段的结果进行全局汇总。

一、MapReduce简介

1.1 MapReduce概述

MapReduce是一个软件框架,用于轻松编写应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)。MapReduce是一种面向海量数据处理的一种指导思想,也是一种用于对大规模数据进行分布式计算的编程模型。

1.2 MapReduce特点

1.优势
(1)易于编程
Mapreduce框架提供了用于二次开发得接口,简单地实现一些接口,就可以完成一个分布式程序。任务计算交给计算框架去处理,将分布式程序部署到hadoop集群上运行,集群节点可以扩展到成百上千个等。
(2)良好的扩展性
当计算机资源不能得到满足的时候,可以通过增加机器来扩展它的计算能力。基于MapReduce的分布式计算得特点可以随节点数目增长保持近似于线性的增长,这个特点是MapReduce处理海量数据的关键,通过将计算节点增至几百或者几千可以很容易地处理数百TB甚至PB级别的离线数据。
(3)高容错性
Hadoop集群是分布式搭建和部署得,任何单一机器节点宕机了,它可以把上面的计算任务转移到另一个节点上运行,不影响整个作业任务得完成,过程完全是由Hadoop内部完成的。
(4)适合海量数据的离线处理
2.局限性
(1)实时计算性能差
MapReduce主要应用于离线作业,无法作到秒级或者是亚秒级的数据响应。
(2)不能进行流式计算
流式计算特点是数据是源源不断的计算,并且数据是动态的;而MapReduce作为一个离线计算框架,主要是针对静态数据集,数据是不能动态变化的。

二、MapReduce编程

2.1 MapReduce架构体系

一个完整的mapreduce程序在分布式运行时有三类实例进程:
(1)MRAppMaster:负责整个程序的过程调度及状态协调;
(2)MapTask:负责map阶段的整个数据处理流程;
(3)ReduceTask:负责reduce阶段的整个数据处理流程。
在这里插入图片描述

2.2 MapReduce编程规范

MapReduce分布式的运算程序需要分成2个阶段,分别是Map阶段Reduce阶段。Map阶段对应的是MapTask并发实例,完全并行运行。Reduce阶段对应的是ReduceTask并发实例,数据依赖于上一个阶段所有MapTask并发实例的数据输出结果。
MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行
用户自定义的Mapper和Reducer都要继承各自的父类。Mapper中的业务逻辑写在map()方法中,Reducer的业务逻辑写在reduce()方法中。整个程序需要一个Driver来进行提交,提交的是一个描述了各种必要信息的job对象。
用户编写的程序分成三个部分:Mapper,Reducer,Driver(提交运行mr程序的客户端驱动)。
注意:整个MapReduce程序中,数据都是以kv键值对的形式流转的。

2.3 MapReduce工作执行流程

整个MapReduce工作流程可以分为3个阶段:map、shuffle、reduce。
在这里插入图片描述
map阶段:
负责把从数据源读取来到数据进行处理,默认情况下读取数据返回的是kv键值对类型,经过自定义map方法处理之后,输出的也应该是kv键值对类型。
shuffle阶段:
map输出的数据会经过分区、排序、规约、分组等自带动作进行重组,相当于洗牌的逆过程。这是MapReduce的核心所在,也是难点所在。也是值得我们深入探究的所在。
默认分区规则:key相同的分在同一个分区,同一个分区被同一个reduce处理。
默认排序规则:根据key字典序排序
默认分组规则:key相同的分为一组,一组调用reduce处理一次。
reduce阶段:
负责针对shuffle好的数据进行聚合处理,输出的结果也应该是kv键值对。

三、总结

本文介绍了MapReduce相关知识,MapReduce是一个软件框架能够并行处理海量数据。一个完整的mapreduce程序在分布式运行时有三类实例进程,分别是MRAppMaster、MapTask以及ReduceTask。另外,整个MapReduce工作流程可以分为3个阶段:map、shuffle、reduce。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值