博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MaReduce理论
阅读量:4615 次
发布时间:2019-06-09

本文共 2165 字,大约阅读时间需要 7 分钟。

MaReduce

MapReduce设计理念

何为分布式计算移动计算,而不是移动数据MapReduce四个阶段1、Split(切数据)2、Map(有多少个线程段,就有多少个map)3、Shuffle(洗牌过程中【分组、排序、分区】,数据结构不改变,类似于打麻将,整理数据)4、Reduce(洗牌后的数据,可以自定义reduce的数量,如果reduce的数量过少,会影响MapReudce的执行时间)Mapper:    Map-reduce的思想就是"分而治之"        Mapper负责"分",即把复杂的任务分解为若干个"简单的任务"执行            "简单的任务"有几个含义:    数据或计算规模相对于原任务要大大缩小    就近计算,即会被分配到存放了所需数据的节点进行计算    这些小任务可以并行计算,彼此间几乎没有依赖关系

34218404.jpg

Reducer:    对map阶段的结果进行汇总    Redcuer的数目由mapred-site.xml配置文件里的项目mapred.reduce.tasks决定。    缺省值为1,用户可以覆盖之

25631363.jpg

Shuffle:    在mapper和reducer中间的一个步骤    可以把mapper的输出按照某种key值重新切分和组合成n份,把key值符合某种范围的输出送到特定的reducer那里去处理

30234535.jpg

一个Split段的大小,不会超过一个block的大小

Hadoop计算框架Shuffle过程详解

每个map task都有一个内存缓冲区(默认是100MB),存储着map的输出结果        当缓冲区快满的时候需要将缓冲区的数据以临时文件的访问存放到磁盘        (Spill溢写是由单独线程来完成,不影响往缓冲区写map结果的线程(spill.percent,默认是0.8))        当溢写线程启动后,需要对这80MB空间内的key做排序(Sort)

85714420.jpg

假如client设置过Combiner,那么现在就是使用Combiner的时候了。将相同key的key/value对的value加起来,减少溢写到磁盘的数据量。(reduce1,word1,[8])当整个map task结束后再对磁盘中这个map task产生的所有临时文件做合并(Merge),对于

75696752.jpg

MapReduce基本流程

MapReduce执行流程

map任务处理:1> 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次函数2> 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出3> 对输出的key、value进行分区4> 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中5> (可选)分组后的数据进行归约Reduce任务处理1> 对多个map任务的输出,按照不同的分区,通过网络copy到不同reduce节点2> 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出3> 把reduce的输出保存到文件中

MapReduce编程模型

MapReduce将作业的整个运行过程分为两个阶段:Map阶段和Reduce阶段Map阶段由一定数量的Map Task组成:    输入数据格式解析:InputFormat    输入数据处理:Mapper    数据分组:PartitionerReduce阶段由一定数量的Reduce Task组成:    数据远程拷贝    数据按照key排序    数据处理:Reducer    数据输出格式:OutputFormat

编写MapReduce程序

基于MapReduce计算模型编写分布式并行程序非常简单,程序员的主要编码工作就是实现Map和Reduce函数其他的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由YARN框架负责处理

MapReduce八股文

MapReduce中,map和reduce函数遵循如下常规格式:map:(k1,v1)->list(k2,v2)reduce:(k2,list(v2))->list(k3,v3)Mapper的接口:protected void map(KEY key,VALUE value,Context context)throws IOException,InterruptedException{}Reduce的接口:protected void reduce(KEY key,Iterable
values,Context context)throws IOException,InterruptedException{}

什么时候容易出现数据倾斜

reduce task的时候,有多个reduce task的时候,数据倾斜:有一个reduce task计算量很大,其他的reduce task计算量很小

转载于:https://www.cnblogs.com/SparseMatrix/p/5255523.html

你可能感兴趣的文章
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>
Display对象,Displayable对象
查看>>
安装oracle11G,10G时都会出现:注册ocx时出现OLE初始化错误或ocx装载错误对话框
查看>>
数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说
查看>>
生产环境下正则的应用实例(一)
查看>>
在CentOS7命令行模式下安装虚拟机
查看>>
Arduino可穿戴开发入门教程Arduino开发环境介绍
查看>>
Windows平台flex+gcc词法分析实验工具包
查看>>
3.Python基础 序列sequence
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>