MapReduce 基础学习
- mapreduce 是一种软件框架
- mapreduce job将任务分解为独立的块儿到不同的map task,进行并行处理;
- map任务输出会做相应的排序处理,并作为reduce 任务输入;
- 框架能很好的处理定时任务,进行监控并能够重新执行失败的任务。
- key 和 value 需要被序列化,通过实现 Writable 接口,以支持序列化;
- key 对象还需要实现 WritableComparable 接口,以支持排序需求。
- 基本处理流程:(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)
- 每个map拥有一个循环内缓冲区(默认100m),容量达到80%,则后台线程开始将内容写入磁盘文件,不妨碍map继续写入缓冲,缓冲区满,则等待。
- 写文件使用round-robin方式,写入文件前,将数据按照reduce分区,对于每个分区,根据key排序,可能的话,执行combiner操作。
- 每次到达缓冲区阈值,都会创建一个文件,map结束前,会执行文件合并(数量不超过3个)和排序。或者压缩(减少数据大小)。
- 如果从未达到阈值,则不创建文件,直接使用内存。这样最高效。配置可能合适大小的缓冲区(io.file.buffer.size,默认4kb)。
- map完成,通知任务管理器,reduce可以开始复制结果数据进行使用。
- shuffle:从mapper获取相关的结果,排序输出到reduce,http。分配尽可能多的内存
- sort:将reduce的输入分组
- reduce:执行reduce方法,处理输入;reduce的数量应为0.95~1.75*节点数。0.95使得所有的reduce可以被全部启动执行;1.75使得执行最快的节点开始执行第二轮,第三轮...;数值越大,负载越大,增加了负载均衡需求,降低了失败成本;reducetask设置为0,则直接跳过reduce阶段,map结果直接输出到FileSystem中
- 检查输入输出
- 计算InputSplit values
- 为 DistributedCache 设置必要的计算信息
- 复制jar及配置到mapreduce系统文件夹
- 提交任务到ResourceManager,监控状态
- 代表一个逻辑分片,并没有真正的存储数据,提供了如何将数据分片的方法。
- 内部有Location信息,利于数据局部化。
- 一个InputSplit给一个单独的map处理
- mapper处理的键值对象,默认为FileSplit。
- byte-oriented view;由RecordReader处理成record-oriented view。
MapReduce 基础学习的更多相关文章
- 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce(转)
零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce:http://www.aboutyun.com/thread-7567-1-1.html mapreduce学习目录总结 ...
- 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...
- Hadoop 综合揭秘——MapReduce 基础编程(介绍 Combine、Partitioner、WritableComparable、WritableComparator 使用方式)
前言 本文主要介绍 MapReduce 的原理及开发,讲解如何利用 Combine.Partitioner.WritableComparator等组件对数据进行排序筛选聚合分组的功能.由于文章是针对开 ...
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
- 零基础学习hadoop到上手工作线路指导(中级篇)
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...
- Spark基础学习精髓——第一篇
Spark基础学习精髓 1 Spark与大数据 1.1 大数据基础 1.1.1 大数据特点 存储空间大 数据量大 计算量大 1.1.2 大数据开发通用步骤及其对应的技术 大数据采集->大数据预处 ...
- [Hadoop in Action] 第4章 编写MapReduce基础程序
基于hadoop的专利数据处理示例 MapReduce程序框架 用于计数统计的MapReduce基础程序 支持用脚本语言编写MapReduce程序的hadoop流式API 用于提升性能的Combine ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
随机推荐
- [T-ARA][Goodbye, OK]
歌词来源:http://music.163.com/#/song?id=22704437 作曲 : 안영민 , 이유진 [作曲 : a-nyeong-min , i-yu-jin] 作词 : 안영민 ...
- ubuntu配置默认python版本并安装pip
ubuntu 16.04本身是自带python的,他本身是自带2.X和3.X,两个版本,默认的是2.X.这里记录一下如果在版本间切换以及如何把python版本切换到3.X下的方法. 1.查看Ubunt ...
- 2754. [SCOI2012]喵星球上的点名【后缀数组】
Description a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串 ...
- P3694 邦邦的大合唱站队
题目背景 BanG Dream!里的所有偶像乐队要一起大合唱,不过在排队上出了一些问题. 题目描述 N个偶像排成一列,他们来自M个不同的乐队.每个团队至少有一个偶像. 现在要求重新安排队列,使来自同一 ...
- Python之Flask框架使用
Flask和Django.Bottle号称Python中的强大又简单的Web框架. Flask是一个使用Python编写的轻量级Web应用框架.基于Werkzeug WSGI工具箱和Jinja2 模板 ...
- empty与isset,null与undefined
一. null VS undefined VS NaN 1. null 定义:null是特殊的object,是空对象,没有任何属性和方法. document.writeln(typeof null); ...
- c++getline()、get()等
1.cin 接受一个字符串,遇“空格”.“TAB”.“回车”都结束 2.cin.get() cin.get(字符变量名)可以用来接收字符 只能接收一个字符 cin.get(字符数组名,接收字符数目)用 ...
- PAT乙级1032
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 ...
- $2018/8/19 = Day5$学习笔记 + 杂题整理
\(\mathcal{Morning}\) \(Task \ \ 1\) 容斥原理 大概这玩意儿就是来用交集大小求并集大小或者用并集大小求交集大小的\(2333\)? 那窝萌思考已知\(A_1,A_2 ...
- Angular动态表单生成(五)
动态表单生成之布局 到上面的篇章为止,我们已经把表单比较完整的生成出来了,也实现了一些验证功能,可以说,我们截止这里,就已经可以满足我们的大部分表单生成需求了~ 但是: 目前来说,我们对于表单的布局只 ...