美文网首页大数据学习大数据 爬虫Python AI Sql玩转大数据
IT十年-大数据系列讲解之MapReduce(四)

IT十年-大数据系列讲解之MapReduce(四)

作者: 5f1df32e8c44 | 来源:发表于2018-04-11 14:23 被阅读52次

    MapReduce适合PB级以上海量数据的离线处理

    MapReduce不擅长什么

    实时计算

    像MySQL一样,在毫秒级或者秒级内返回结果

    流式计算

    MapReduce的输入数据集是静态的,不能动态变化

    MapReduce自身的设计特点决定了数据源必须是静态的

    DAG计算

    多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出

    MapReduce编程模型

    MapReduce将作业job的整个运行过程分为两个阶段:Map阶段和Reduce阶段

    Map阶段由一定数量的Map Task组成

    输入数据格式解析:InputFormat

    输入数据处理:Mapper

    数据分组:Partitioner

    Reduce阶段由一定数量的Reduce Task组成

    数据远程拷贝

    数据按照key排序

    数据处理:Reducer

    数据输出格式:OutputFormat

    InputFormat

    文件分片(InputSplit)方法

    处理跨行问题

    将分片数据解析成key/value对

    默认实现是TextInputFormat

    extInputFormat

    Key是行在文件中的偏移量,value是行内容

    若行被截断,则读取下一个block的前几个字符

    Split与Block

    Block

    HDFS中最小的数据存储单位

    默认是64MB

    Spit

    MapReduce中最小的计算单元

    默认与Block一一对应

    Block与Split

    Split与Block是对应关系是任意的,可由用户控制

    Combiner

    Combiner可做看local reducer

    合并相同的key对应的value(wordcount例子)

    通常与Reducer逻辑一样

    好处

    减少Map Task输出数据量(磁盘IO)

    减少Reduce-Map网络传输数据量(网络IO)

    如何正确使用

    结果可叠加

    Sum(YES!),Average(NO!)

    Partitioner

    Partitioner决定了Map Task输出的每条数据交给哪个Reduce Task处理

    默认实现:hash(key) mod R

    R是Reduce Task数目

    允许用户自定义

    很多情况需自定义Partitioner

    比如“hash(hostname(URL)) mod R”确保相同域名的网页交给同一个Reduce Task处理

    Map和Reduce两阶段

    Map阶段

    InputFormat(默认TextInputFormat)

    Mapper

    Combiner(local reducer)

    Partitioner

    Reduce阶段

    Reducer

    OutputFormat(默认TextOutputFormat)

    MapReduce编程模型—内部逻辑

    MapReduce编程模型—外部物理结构

    MapReduce 2.0架构

    Client

    与MapReduce 1.0的Client类似,用户通过Client与YARN交互,提交MapReduce作业,查询作业运行状态,管理作业等。

    MRAppMaster

    功能类似于 1.0中的JobTracker,但不负责资源管理;

    功能包括:任务划分、资源申请并将之二次分配个Map Task和Reduce Task、任务状态监控和容错。

    MapReduce 2.0容错性

    MRAppMaster容错性

    一旦运行失败,由YARN的ResourceManager负责重新启动,最多重启次数可由用户设置,默认是2次。一旦超过最高重启次数,则作业运行失败。

    Map Task/Reduce Task

    Task周期性向MRAppMaster汇报心跳;

    一旦Task挂掉,则MRAppMaster将为之重新申请资源,并运行之。最多重新运行次数可由用户设置,默认4次。

    数据本地性

    什么是数据本地性(data locality)

    如果任务运行在它将处理的数据所在的节点,则称该任务具有“数据本地性”

    本地性可避免跨节点或机架数据传输,提高运行效率

    数据本地性分类

    同节点(node-local)

    同机架(rack-local)

    其他(off-switch)

    推测执行机制

    作业完成时间取决于最慢的任务完成时间

    一个作业由若干个Map任务和Reduce任务构成

    因硬件老化、软件Bug等,某些任务可能运行非常慢

    推测执行机制

    发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度

    为拖后腿任务启动一个备份任务,同时运行

    谁先运行完,则采用谁的结果

    不能启用推测执行机制

    任务间存在严重的负载倾斜

    特殊任务,比如任务向数据库中写数据

    常见MapReduce应用场景

    简单的数据统计,比如网站pv、uv统计

    搜索引擎建索引 (mapreduce产生的原因)

    海量数据查找

    复杂数据分析算法实现

    聚类算法

    分类算法

    推荐算法

    图算法

    PS:

    关注微信公众号“程序员OfHome”,发送“领取资料”可以免费领取视频资料。

    对大数据感兴趣的朋友可以加入到我们的程序员OfHomeQQ群:610535338 群里有都是从事或者在学习大数据的朋友,在此我也邀请你进群一起学习,群内没有广告,也是禁止打广告的,大家也可以关注一下我的微信公共号“程序员OfHome”下方扫扫可关注。

    相关文章

      网友评论

        本文标题:IT十年-大数据系列讲解之MapReduce(四)

        本文链接:https://www.haomeiwen.com/subject/ktaahftx.html