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月 ...
随机推荐
- Echarts使用小结
还是先来简单的了解一下Echart是什么吧? ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前 ...
- 【Java 笔记】 java 格式化输出
public static void main(String[] args) { /** * 格式化形式 * %[argument_index$][flags][width][.precision]c ...
- FreeMaker常用方法
FreeMaker常用方法 1.表达式转换类 ${expression}计算expression并输出 #{ expression }数字计算#{ expression ;format}安格式输出数字 ...
- python统计磁盘使用情况
#coding:utf-8import os; def SortList(item): return item[1]; def ReadSize(fileName): return flo ...
- jenkins权限设置
- JSP九大内置对象和四大作用域和Servlet的三大作用域对象
一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...
- c++问题整理
1.C++ 多态,多态的实现,c++虚函数,虚函数和纯虚函数有什么区别,虚函数的实现原理,虚继承,析构函数能否为虚,为什么析构要虚函数,析构函数声明为虚函数的作用,构造函数为啥不能定义为虚函数,析构函 ...
- leetcode 141. Linked List Cycle 、 142. Linked List Cycle II
判断链表有环,环的入口结点,环的长度 1.判断有环: 快慢指针,一个移动一次,一个移动两次 2.环的入口结点: 相遇的结点不一定是入口节点,所以y表示入口节点到相遇节点的距离 n是环的个数 w + n ...
- 解决nodejs运行程序卡死之后,程序后台运行的问题
查看node进程 ps aux | grep node 查出的结果如下 root 1660 0.0 1.5 885024 15892 tty1 Sl+ Mar11 0:00 node server.j ...
- c模拟内存分配算法(首次适应算法,最佳适应算法,最坏适应算法)
#include<bits/stdc++.h> using namespace std; /*定义内存的大小为100*/ #define MEMSIZE 100 /*如果小于此值,将不再分 ...