MapReduce 简介 Python爬虫入门教程 81-100 小众爬虫框架looter,框架作者竟然在官方手册开车 机器人二维导航教程汇总 mapper 使用示例 Redis的概念及关系型与非关系型数据库对比 MySQL必知必会:使用WHERE、正则表达式、通配符过滤数据 Solr的增量更新和全量更新对比 MYSQL数据库维护 MATLAB与Mysql数据库连接并数据交换(基于ODBC) 数据库:PostgreSQL:基础功能使用介绍 MYSQL 5.7 高级SQL语句(3)——数据库函数和存储过程 mysql导出数据到表格讲解大全(导出数据带表头,导出数据中文乱码问题解决) SpringBoot升级/指定jackson版本 JAVA - EnumMap与EnumSet简单总结 js获取主机mac等信息【亲测有效】-- 附执行结果&代码 [记录六] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台连接mysql和redis,登陆接口的编写 C# 读取XML配置文件 MongoDB数据库设置密码 Redis之重设密码及开启远程访问 本地Navicat连接阿里云MySQL数据库注意要点 PHP Windows系统实现定时任务的两种方式bat版 面试官让我手写promise,我这样写,他很满意 超级码力在线编程大赛初赛 第二场 UML类图的依赖和关联详解(含代码) 【C语言】新手实现简单的石头剪刀布人机对战 Codeforces Round #666 (Div. 2)题解ABC Codeforces Round #666 (Div. 2)E Monster Invaders 华为今年不会推出运行鸿蒙OS的手机;Deno 1.3.2发布|极客头条 异或在笔试题中的超神表现 超级码力在线编程大赛初赛 第2场 T1-T4题解 1397D. Stoned Game(博弈) Codeforces Round #666(Div.2)A~D题题解 高性能微服务架构技术选型 阿里饿了么Java4面:(数据结构+框架源码+JVM+分布式) 2020java面试总结 使用ffmpeg提取mp4内部日期重命名文件(需lua) 【剑指Offer】56.2 数组中只出现一次的数字,其他出现3次 JAVA二三事-使用IO+Properties实现动态读取文本信息 排序算法的C语言实现C代码(未更完) RT-Thread 内核学习--信号量的初步使用 【剑指Offer】57.2 和为S的连续正数序列 Qt三方库开发技术:QXlsx介绍、编译和使用 4G DTU模块的作用和功能说明 【Tips】- Wifi模块和4G无线通信 【5G核心网】 Identifiers 身份标识 DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器 如何根据普通ip地址获取当前地理位置 人工智能能力提升指导总结 520了,用32做个简单的小程序 程序员的数学--用贝叶斯定理来推断一个案子
您的位置:首页 >前端 >

MapReduce 简介

1. MapReduce 介绍 MapReduce思想在生活中处处可见。或多或少都曾接触过这种思想。MapReduce的思 想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。 Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆 分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。 Reduce负责“合”,即对map阶段的结果进行全局汇总。 MapReduce运行在yarn集群 1. ResourceManager 2. NodeManager 这两个阶段合起来正是MapReduce思想的体现。 还有一个比较形象的语言解释MapReduce: 我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多, 数书就更快。 现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。 1.1. MapReduce 设计构思和框架结构MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码 和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。 既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输 入(input),通过本身定义好的计算模型,得到一个输出(output)。 Hadoop MapReduce构思: 分而治之对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治 之的策略。并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对 划分的子任务或数据块同时进行计算。不可分拆的计算任务或相互间有依赖关系 的数据无法进行并行计算! 统一构架,隐藏系统层细节 如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要 考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此, MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统 层面的处理细节。 MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供一个抽象和高 层的编程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需编 写少量的处理应用本身计算问题的程序代码。如何具体完成这个并行计算任 务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的 执行,到大到数千小到单个节点集群的自动调度使用。 构建抽象模型:Map和Reduce MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层 的并行编程抽象模型 Map: 对一组数据元素进行某种重复式的处理; Reduce: 对Map的中间结果进行某种进一步的结果整理。 Map和Reduce为程序员提供了一个清晰的操作接口抽象描述。MapReduce 处理的数据类型是键值对。 MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程 实现:Map: (k1; v1) → [(k2; v2)] Reduce: (k2; [v2]) → [(k3; v3)]MapReduce 框架结构 一个完整的mapreduce程序在分布式运行时有三类实例进程: 1. MRAppMaster 负责整个程序的过程调度及状态协调 2. MapTask 负责map阶段的整个数据处理流程 3. ReduceTask 负责reduce阶段的整个数据处理流程2. MapReduce 编程规范 MapReduce 的开发一共有八个步骤, 其中 Map 阶段分为 2 个步骤,Shuffle 阶段 4 个步骤,Reduce 阶段分为 2 个步骤 Map 阶段 2 个步骤 1. 设置 InputFormat 类, 将数据切分为 Key-Value(K1和V1) 对, 输入到第二步 2. 自定义 Map 逻辑, 将第一步的结果转换成另外的 Key-Value(K2和V2) 对, 输出结 果 Shuffle 阶段 4 个步骤 1. 对输出的 Key-Value 对进行分区 2. 对不同分区的数据按照相同的 Key 排序 3. (可选) 对分组过的数据初步规约, 降低数据的网络拷贝 4. 对数据进行分组, 相同 Key 的 Value 放入一个集合中 Reduce 阶段 2 个步骤 1. 对多个 Map 任务的结果进行排序以及合并, 编写 Reduce 函数实现自己的逻辑, 对输 入的 Key-Value 进行处理, 转为新的 Key-Value(K3和V3)输出 2. 设置 OutputFormat 处理并保存 Reduce 输出的 Key-Value 数据

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。