MapReduce分析
一、 MapReduce定义
二、MapReduce优缺点
三、MapReduce工作原理

一、MapReduce定义
MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
二、MapReduce优缺点
1)优点:
i)MapReduce易于编程:需要实现一些简单接口,就可以完成一个分布式程序
ii)良好的扩展性:通过简单的增加机器(nodemanager)来扩展它的计算能力
iii)高容错性
iiii)适合海量数据的离线分析
三、MapReduce工作原理

一个MapReduce程序启动的时候,最先启动的是MRAppMaster,MRAppMaster启动后根据本次job的描述信息,计算出需要的maptask实例数量,然后向集群申请机器启动相应数量的maptask进程:
一个job的Maptask阶段并行度由客户端在提交job时决定,而客户端对map阶段并行度的规划的基本逻辑为:
i)将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多个split),然后每一个split分配一个mapTask并行实例处理;
ii)这段逻辑及形成的切片规划描述文件,由FileInputFormat实现类的getSplits()方法完成,其过程如下图:

Maptask端工作流程:
i)Read阶段:MapTask通过用户编写的RecordReader,通过调用read()方法从输入InputSplit中解析出一个个key/value值;
ii)Mapper阶段:该节点主要是将从Read阶段解析出的key/value值交给用户编写map()函数处理,并产生一系列新的key/value值(每一个Read阶段产生的key/value都会创建一个Mapper对象),通过调用Mapper的context.write()方法输出到OutputCollector收集器;
iii)Collect阶段:OutputCollector通过调用collect()方法收集key/value值,在该函数内部,它会将生成的key/value分区(调用Partitioner :对于Mapper输出的每一个键值对,系统都会给定一个partition,partition值默认是通过计算key的hash值后对Reduce task的数量取模获得。如果一个键值对的partition值为1,意味着这个键值对会交给第一个Reducer处理),之后将key/value值发送至环形内存缓冲区,此阶段后正式进入Maptask端的shuffer;
iiii)Spill(溢写)阶段:不断地将键值对输出到在内存中构造的一个环形数据结构中(使用环形数据结构是为了更有效地使用内存空间,在内存中放置尽可能多的数据),也可称为环形缓冲区;这个数据结构其实就是个字节数组叫Kvbuffer,默认大小100M(可以通过mapreduce.task.io.sort.mb(default:100)参数来调整),spill一般会在Buffer空间大小的80%(可以通过mapreduce.map.sort.spill.percent(default:0.80)进行调整)开始进行spill(因为spill的时候还有可能别的线程在往里写数据,因为还预留空间,有可能有正在写到Buffer中的数据),Maptask在计算的时候会不断产生很多spill文件;
iiiii)Merge阶段:将很多的spill文件合并为一个大文件;在合并的过程中,)在溢出过程及合并的过程中,都要调用 Partitioner进行分区和针对 key进行排序 sort,还有可能增加的Combiner合并,针对有设置Combiner操作的,不同分区内根据相同key的key/value,调用reduce()方法,将相同key的key/value进行合并(Merge阶段如果有大量spill文件,无法一次完成整个merge的过程,这个时候需要调大mapreduce.task.io.sort.factor(default:10)来减少merge的次数,从而减少磁盘的操作);

MapReduce骚气分析相关推荐

  1. 2020卫星参数表大全_王者荣耀比较秀的名字 2020年比较骚气比较浪的王者荣耀名字大全...

    游戏中该起什么样的名字,才能让其他玩家很快的记住,从而达到认识更多玩家,认识到更多的朋友,达到交友目的. 2020年比较骚气比较浪的王者荣耀男性玩家名字大全如下: 骚里骚气 闷里闷气 孤独患者 洁癖患 ...

  2. 【骚气的动效】外发光涟漪波纹动画、向外辐射动画效果,通常用于地图上面某一个扩散点效果

    第一种:两轮外发光叠加,第二轮外发光结束后再出现第一轮 /* 外发光动画.向外辐射动画效果 */$orangeColor: rgba(251, 193, 105, 0.6); %out-glow {& ...

  3. java代码里的JSON格式怎么写好看_谁会不爱让代码骚里骚气的VSCode扩展插件呢?...

    点击上方 "Python人工智能技术" 关注,星标或者置顶22点24分准时推送,第一时间送达 来自:公众号 读芯术 | 编辑:真经君 码农真经(ID:coder_experienc ...

  4. MapReduce 源码分析(一)准备阶段

    MapReduce 源码分析 本篇博客根据wordCount代码进行分析底层源码的.以下称它为WC类. package com.henu;import org.apache.hadoop.conf.C ...

  5. vscode怎么引用css_今天来安装一个骚气的 VS Code 主题

    最近一直在 VSCode 上刷 LeetCode 题目,写久了感觉界面有点沉闷,决定找一个酷炫的主题来醒目一下. 结果在 GitHub 上找到一个令人纸醉金迷的 VSCode 主题,GitHubDai ...

  6. js增加透明css样式,如何配置透明发光的骚气 vscode

    1 安装自定义 JS 和 CSS 插件 2 安装发光主题 3 添加样式配置文件 在 VSCode 安装目录(自己随便选择一个文件夹也可以),放入以下文件. 为了方便下载,文件整理到了 Github-J ...

  7. 【基于MapReduce的成绩分析系统】——计算每门课程的平均成绩、最高成绩、最低成绩

    本次用 MapReduce 计算每门课程的平均成绩.最高成绩和最低成绩也是我们<大数据基础>课程的期末大作业 [ 基于MapReduce的成绩分析系统 ] 的功能需求之一. 临近期末,在这 ...

  8. 三款很酷很骚气的底部导航

    早上好,骚年,我是小菜,我的公众号「菜鸟翻身」会推荐 GitHub 上好玩的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注我. 底部导航栏是 APP 最常用的功能之一,想最初都是自 ...

  9. 火爆全网!这个 Python 项目很骚气!

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 来源:量子位 像文字云一样,用各种小图拼出大的图片,构建一个像素风的世界,就像< ...

最新文章

  1. ATMEGA328实验电路板
  2. LSMW批导数据文件注意
  3. gRPC .NET Core跨平台学习
  4. CSS制作简单loading动画
  5. Python学习笔记——GIF倒放处理
  6. java 分层领域模型_Java领域模型 | 学步园
  7. C++ STL容器vector篇(四) vector容器交换, 预留空间
  8. android 按下缩小效果松开恢复_22省份三季报:粤苏总量差距缩小,19省份实现正增长...
  9. 关于android中PendingIntent.getBroadcase的注册广播
  10. c++ 取整_MPIP Raw转Raw图简述-C实现
  11. 【课程设计】图书管理系统 C语言版---操作系统版
  12. php ddos 防御,PHP DDos的几个防御方法
  13. 二进制转四进制计算机,计算机进制转换方法
  14. webdav支持的网盘对比分析
  15. java把汉字转换成拼音
  16. php 速卖通产品采集,AliExpress(速卖通)关键词搜索结果采集 - 八爪鱼采集器
  17. PostgreSQL on duplicate update
  18. 创业要素:如何推广自己的产品
  19. Rolling In The Deep中文歌词翻译能对的上节奏
  20. QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问

热门文章

  1. 一文搞懂K近邻算法(KNN),附带多个实现案例
  2. 360推两款无刘海新机,主打安全和AI,起售价1199
  3. 特斯拉再出车祸,两死一伤,这次是Model S
  4. 如何成为一名对话系统工程师
  5. Java接地气日常编码技巧
  6. 刷了一个月算法,终于拿到了double的offer
  7. 让 Spring Boot 启动更快一点
  8. 从0梳理1场数据挖掘赛事!
  9. 厉害!苏炳添即将在暨南大学成立短跑实验室
  10. 那些在一个公司死磕了5-10年的程序员,最后都怎么样了?