广东省城乡与住房建设厅网站,学广告设计难不难,做调研的网站一般有哪些,瑞丽网站建设文章目录 7. MapReduce7.1 MapReduce简介7.1.1 分布式并行编程7.1.2 MapReduce模型简介 7.2 MapReduce体系结构7.3 MapReduce工作流程概述7.4 Shuffle过程原理7.5 MapReduce应用程序的执行过程7.6 WordCount实例分析7.7 MapReduce的具体应用7.8 MaReduce编程实践 7. MapReduce … 文章目录 7. MapReduce7.1 MapReduce简介7.1.1 分布式并行编程7.1.2 MapReduce模型简介 7.2 MapReduce体系结构7.3 MapReduce工作流程概述7.4 Shuffle过程原理7.5 MapReduce应用程序的执行过程7.6 WordCount实例分析7.7 MapReduce的具体应用7.8 MaReduce编程实践 7. MapReduce
7.1 MapReduce简介 MapReduce是一种分布式并行编程框架 数据处理能力提升的两条路线 单核CPU到双核到四核到八核分布式并行编程
7.1.1 分布式并行编程 借助一个集群通过堕胎机器同时并行处理大规模数据集 相关的并行编程框架 并行编程模型和传统的并行编程框架的区别
7.1.2 MapReduce模型简介 MapReduce包含两大函数Map和Reduce MapReduce策略 采用分而治之的做法 MapReduce理念 计算向数据靠拢而不是数据向计算靠拢 什么事数据向计算靠拢 即完成一次数据分析时选择一个计算节点把运行数据分析的程序放在计算节点上运行 然后把它所涉及的数据全部从各个不同的节点上面拉过来传输到计算发生的地方 MapReduce采用计算向数据靠拢的方式 即会寻找离这个数据节点最近的Map机器做这个机器上的数据分析通常Map机器和数据在同一个台机器上从而大大减少网络中的数据传输靠开销 MapReduce架构Master/Slave的架构 Map函数和Reduce函数 Map函数 Reduce函数
7.2 MapReduce体系结构 MapReduce体系结构 Client客户端 通过client可以提交用户编写的应用程序用户通过它将应用程序交给JobTracker端通过这些Client用户也可以通过它提供一些接口去查看当前提交作业的运行状态 JobTracker作业跟踪器 负责资源的监控和作业的调度监控底层的其他的TaskTracker以及当前运行的Job的健康状况一旦探测到失败的情况就把这个任务转移到其他节点继续执行跟踪任务执行进度和资源使用量 TaskTracker(任务调度器) 执行具体的相关任务一般接受JobTracker发送过来的命令 把一些自己的资源使用情况以及任务的运行进度通过心跳的方式也就是heartbeat发送给JobTracker 使用slot概念将自己机器的cpu、内存资源等分为slot 两种类型的slot不互相通用map类型的slot不能用了reduce任务这是1.0的缺陷 Task任务也有两种map任务和reduce任务
7.3 MapReduce工作流程概述 MapReduce工作流程 将数据分片处理利用map进行输入key,value类型然后通过Reduce任务输出(key,value)类型到HDFS将map的结果进行排序、归并、合并shuffle结束后将结果分发给相应的Reduce处理注意不同map任务之间不进行通信不同Reduce任务之间也不会进行信息交换 MapReduce执行的各个阶段 数据通过InputFormat从HDFS读取文件并对输入进行格式验证将大数据集切分成多个split分片不是物理上的切分只是逻辑上的切分Record Reader(RR)记录阅读器根据分片的距离位置信息从HDFS的各块将数据分片的信息读出输出为key,value形式作为map的输入Map用户撰写的处理逻辑生成一系列的key,value的中间结果通过shuffle(分区排序合并)过程将相关的键值对分发给相应的Reduce任务处理编写Reduce处理逻辑任务结束后分析结果以keyvalue)形式显示outoutformat检查输出格式写入HDFS系统 分片的具体过程 一个大文件在HDFS中可能由多个块组成如下图例子在物理上被分为6块但在逻辑上通过split分块四块内容 每个分片都是一个map任务如果分片过少影响并行效率若分片过多map切换耗费相关管理资源影响执行效率 一般来说会将一个块的大小作为HDFS的分片大小因为假如block1和block2不在一个机器上面block1运行split1的map任务此时 需要将数据从block2机器存到block1所在的机器会出现额外的数据开销 Reduce任务的数量 最优的Reduce任务个数取决于集群中可用的Reduce任务槽slot的数目通常设置比reduce任务槽数目稍微小一些的Reduce任务个数这样可以预留一些系统资源处理可能发生的错误
7.4 Shuffle过程原理 Shuffle过程简介 HDFS输入数据分片操作每个分片都启动一个Map任务Map任务中包含对用户的处理逻辑Map输出结果键值对输出到缓冲区若缓冲区满了则发生溢写溢写过程将缓存区的数据经过分区排序合并处理之后写到磁盘同时清空缓冲区溢写发生多次生成多个磁盘文件要对这些磁盘文件做统一归并归并完成后通知Reduce任务来取走磁盘分区内的数据取走后Reduce任务要执行归并、合并操作将合并后的数据传递给Reduce函数最后输出到相应的HDFS文件系统 Shuffle过程分类 Map端的Shuffle过程 每个Map任务都会给其分配相应的缓存一般来说是100M 如果缓存满了再启动溢写可能会导致后来Map生成的值无法写入缓冲区丢失值。 因此在溢写的时候会设置一个溢写比例例如80%即如果写出内容占缓存比例的80%的时候启动溢写剩余20M空间可以供给给后来生成的map 溢写的分区操作主要是利用分区分给不同的Reduce任务排序操作内部会自动完成合并操作不是必须的若用户定义合并操作则会启动合并操作如a,1(a,1)会被合并为a,2 Reduce端的Shuffle过程 向JobTracker询问自己所需要的数据是否能够可以取出JobTracker监测Map任务若是任务完成了就通知Reduce任务将任务取走Reduce从Map机器上将任务拉去到本地Map任务生成的键值对是从不同的Map机器上拉去的可以继续做归并操作注意这个归并操作不同于合并合并是将a,1(a,1)合并为a,2这种形式归并是将多个Map中的a,1合并为a,1,1,1所以若Map过程没有合并操作得到的就是a,1,1,1形式数据归并之后若是用户定义了合并操作会将其合并为a,3形式数据
7.5 MapReduce应用程序的执行过程 整个执行过程 程序部署将程序分发到不同机器上 分配Worker执行Map任务和Reduce任务 选择空闲Worker机器进行分片然后读取数据分给不同的Worker执行Map任务生成key,value键值对输出结果先写到缓存 缓存满了会将数据写到本地 Reduce机器将数据拉回到本地处理 将相关的结果写到输出文件中去
7.6 WordCount实例分析 WordCount程序任务满足MapReduce分而治之的要求 一个WordCount执行过程的实例 假设用户没有定义合并combine操作shuffle操作之后生成的是(key,value-list)形式 假如用户定义了Combine操作
7.7 MapReduce的具体应用 相关应用 举例MapReduce实现关系的自然连接 用Map实现自然连接的过程:原理 具体过程
7.8 MaReduce编程实践
见[MapReduce编程实践(Hadoop3.3.5)_厦大数据库实验室博客 (xmu.edu.cn)](