美文网首页IT在线课程
了解大数据(2)MapReduce

了解大数据(2)MapReduce

作者: employeeeee | 来源:发表于2018-11-03 11:11 被阅读144次

    MapReduce设计思想

    书中对MapReduce思想的解读感觉非常的好理解,假如说现在我们要处理的数据是一副扑克牌,你不知道扑克牌中是不是有54张,(在这里我们把MapReduce简化为两个讲点函数 Mapping 和 Reducing)
    就需要对这副扑克牌进行处理,

    • 映射(Mapping):对集合里的每一个目标应用同一个操作,把扑克牌数一遍,分别映射到红桃 黑桃 方块 梅花中,经过Mapping之后 会输出一个Key/Value的值, 例如红桃:4张 黑桃:6张等.
    • 化简(Reducing): 相当于遍历集合中的元素返回一个汇总的结果,来计算是否为54张,这里是按照相同的key进行汇总 即黑桃:xx张;红桃:xx张 黑桃和红桃在这里就充当了Key

    那么在这样的一个处理方法中 就涉及到了 三个精华思想

    1. 并行化 并行化分为空间和时间的并行化,时间并行化就是流水线的一个技术,空间上的并行化 就是指多台处理器来对数据进行处理的技术
    image.png

    在进入Reduce之前,必须要等到所有的map函数执行完,因此在进入reduce之前需要一个同步障(Barrier)

    1. 抽象化
      这个地方我理解也不是很好 大概就是一组数据会被中间值接受 再对key值相同的数据进行一个汇总,输出的就是一组符合这个key的数据.

    2. 结构统一 隐藏细节
      MapReduce统一架构,为程序员隐藏系统层细节.在之前的并发计算方法中,需要考虑到数据存储 划分 分发 结果收集 错误恢复等诸多细节.MapReduce提供一个比较统一的计算框架 可完成计算任务的划分和调度.数据的分布存储和划分 处理数据与计算任务的同步 结果数据的收集整理 系统通信 负载平衡 计算性能优化处理 处理系统节点出错检测和失效恢复.

    MapReduce的组成

    1. 客户端
      提交MapReduce应用程序 每一个job都会在客户端通过JobClient类将应用程序配置参数 Configuration 打包成JAR包 存储到HDFS上
    2. JobTracker
      协调作业的运行,JobTracker实际上是一个java应用程序,它的主类是JobTraker.其主要负责的事情包括:与客户端通信,接受客户端的命令,接受TaskTracker心跳(分配Task任务列表 ,更新Task状态,以及检测状态) 内部处理操作,按照调度算法对job进行排列.
    3. TaskTracker
      周期性的向JobTracker发送心跳报告,在RPC调用返回结果后,解析结果得到 JobTracker下发的运行Task的指令.就会在TaskTracker节点上 准备运行这个Task,Task的运行是在一个与TaskTracker进程隔离的JVM中执行的.
    4. 文件系统
      一般情况下 文件采用HDFS 它是在其他实体之间共享作业和文件系统

    MapReduce 作业运行流程

    Hadoop 运行MapReduce作业的步骤主要包括:提交作业,初始化作业,分配任务,执行任务,更新进度和状态,完成作业,

    1. 命令行提交
      用户使用Hadoop命令运行脚本提交MapReduce程序到集群,会调用到JobClient.runJob()方法开始提交,最终则通过Job对象内部的JobClient对象的submitJobInternal()方法提交作业到JobTracker.
    2. 作业上传
      在提交作业到JobTracker之前还需要完成相关初始化工作,这些工作包括:获取用户作业的jobId,创建HDFS目录,上传作业 相关依赖库 分发所需文件到HDFS上 以及用户输入数据的所有分片信息等 这些上传是不需要用户直接干涉的
    3. 产生切分文件
      作业提交后 jobCilent调用InputFormt中的getSplits()方法产生用户数据的split分片信息,切片默认大小和HDFS的块大小相同(64MB),有利于Map任务的本地化执行,无需通过网络传递数据,
    4. 提交作业到JobTracker
      JobClient 通过远程过程调用协议(RPC)将作业提交到JobTracker作业调度器中,首先作为作业创建对象JobInProgress对象.JobTracker会为用户提交的每一个作业创建一个对象,对象维护作业运行时的信息,跟踪运行作业的状态和进度.检查用户是否有指定队列的作业提交权限.

    相关文章

      网友评论

        本文标题:了解大数据(2)MapReduce

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