mapreduce
大数据面壁者
大数据相关知识分享,框架底层原理机制,生产学习中遇到的相关问题分享,共同学习,共同进步。
展开
-
Partition分区之底层源码解析
shuffle机制之Partition分区一、分区概念分区概念:将数据按照条件处理后,最终输出到多个文件中.二、源码解析2.1 通过设置分区数实现分区效果默认情况下,我们运行WodCount案例可以看到,在输出路径中,所有的数据都存储到一个文件中(part-r-00000)那么多个分区对应的就是多个不同的文件,比如part-r-00001、part-r-00002…思考1:为什么设置reduce的个数,就可以实现分区的效果?首先默认情况下,通过源码MapTaskrun()方法找到r原创 2020-11-19 20:00:15 · 359 阅读 · 0 评论 -
MR之shuffle机制总结
MR之shuffle机制~分区一、shuffle阶段划分Map方法之后,Reduce方法之前的处理过程就是shuffle阶段.(sort-copy-sort)二、shuffle阶段流程分析相关基础:原创 2020-11-19 19:36:19 · 1993 阅读 · 0 评论 -
MapReduce工作流程
MapReduce工作流程上面的流程是整个MapReduce最全工作流程,但是Shuffle过程只是从第7步开始到第16步结束,具体Shuffle过程详解,如下:(1)MapTask收集我们的map()方法输出的kv对,放到内存缓冲区中(2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件(3)多个溢出文件会被合并成大的溢出文件(4)在溢出过程及合并的过程中,都要调用Partitioner进行分区和针对key进行排序(5)ReduceTask根据自己的分区号,去各个MapTask机器上原创 2020-11-19 17:05:38 · 313 阅读 · 0 评论 -
MR切片机制及底层源码追踪
MR切片机制总结一、概述MR程序在运行的时候需要将文件切分为多个分发给不同MapTask进行处理,那么问题来了,MR底层是如何对文件进行切分的呢?二、InputFormat切片机制Hadoop框架内部定义了一个读取数据的基类流~InputFormat(抽象类),其内部定义了2个抽象方法快捷键Ctrl + N 搜索InputFormat类,查看该类中方法public abstract class InputFormat<K, V> { public abstract Li原创 2020-11-19 16:32:02 · 1112 阅读 · 2 评论 -
TextInputFormat切片机制
TextInputFormat切片机制一、TextInputFormatTextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量, LongWritable类型。值是这行的内容,不包括任何行终止符(换行符和回车符),Text类型。以下是一个示例,比如,一个分片包含了如下4条文本记录。Rich learning formIntelligent learning engineLearning more conve原创 2020-11-19 14:34:28 · 959 阅读 · 0 评论 -
CombineTextInputFormat切片机制
CombineTextInputFormat切片机制一、概述框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其低下。TextInputFormat切片机制:https://blog.csdn.net/weixin_42796403/article/details/109804581二、应用场景(处理小文件)CombineTextInputFor原创 2020-11-19 14:16:40 · 2080 阅读 · 1 评论 -
FileInputFormat切片源码解析
FileInputFormat切片源码解析一、FileInputFormat切片机制1.简单按照文件的内容长度进行切片2.切片大小,默认等于Block大小3.切片时不考虑数据集体性,而是针对每一个文件单独切片二、切片过程三、FileInputFormat切片大小配置参数四、切片源码//1、getSplits()方法源码解析:long minSize = Math.max(getFormatMinSplitSize(), getMinSplitSize(job)); //切片最原创 2020-11-19 11:22:58 · 653 阅读 · 0 评论 -
MR核心编程思想总结
MR核心编程思想总结一、MR思想初识先分后合思想,MR程序分为map和ruduce两个阶段,map阶段负责将海量数据分类形成kv键值对,reduce阶段负责将map阶段形成的kv键值对分组合并。1、首先待计算的数据在client端生成切片(逻辑上对数据进行划分) , 生成的切片个数对应着要启动多少个MapTask程序进行Map阶段的计算. 2、多个MapTask程序是并行运行的,互不相干. 3、在每个MapTask中对数据的处理要考虑到很多细节, 是否有分区, 如何排序, 数据如何写磁盘原创 2020-11-19 10:34:23 · 1150 阅读 · 0 评论 -
MapReduce程序之Job提交源码
MepReduce程序之Job提交源码1)Job提交流程源码详解waitForCompletion(true)submit();// 1建立连接connect(); // 1.1创建提交Job的代理 new Cluster(getConfiguration()); // 1.2判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2 提交jobsubmitter.submitJobInternal(Job.this, clus原创 2020-11-19 09:59:13 · 242 阅读 · 0 评论 -
Hadoop切片与MapTask并行度决定机制
Hadoop切片与MapTask并行度决定机制一、MapTask并行度决定机制数据块:Block是HDFS物理上把数据分成一块一块。数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。hadoop数据切片大小默认与hdfs块大小相同为128M二、数据切片与MapTask并行度决定机制...原创 2020-11-17 20:46:39 · 282 阅读 · 0 评论 -
Hadoop序列化
Hadoop序列化一、序列化概述1.什么是序列化序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到的字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。2.为什么要序列化一般来说,“活的”对象只生存在内存中,关机断电就没有了。而且“活的”对象只能由本地进程使用,不能被发送到网络上的另外一台计算机。然而序列化可以存储“活的“对象,可以将“活的”对象发送到远程计算机。3.为什么不用Java的序列化原创 2020-11-17 20:40:05 · 189 阅读 · 0 评论 -
手写MR程序之wordcount案例
手写MR程序之wordcount案例(三种提交方式)一、WordCount案例实操1)MR原理解析从不同角度理解MR程序的运行: 1.流的角度: Input --->InputFormat ----> Mapper---> Shuffle ---->Reducer ---> OutputFormat--->Output 2.MR阶段划分: Map ---> Shuffle ---> Reduce 3.底层代码: MapTask:原创 2020-11-17 20:06:01 · 1873 阅读 · 1 评论 -
MapReduce核心思想
MapReduce核心思想一、 MapReduce核心编程思想(1)分布式的运算程序往往需要分成至少2个阶段。(2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。(3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。总结:分析WordCount数据流走向深入原创 2020-11-16 23:40:13 · 827 阅读 · 0 评论 -
MapReduce优缺点
MapReduce优缺点一、优点1)MapReduce 易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。2)良好的扩展性当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。3)高容错性MapReduce设计的初衷就是使程序能够部署在廉价的机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,原创 2020-11-16 23:37:02 · 9020 阅读 · 0 评论