MapReduce源码分析之InputFormat
InputFormat描述了一个Map-Reduce作业中的输入规范。Map-Reduce框架依靠作业的InputFormat实现以下内容:
1、校验作业的输入规范;
2、分割输入文件(可能为多个),生成逻辑输入分片InputSplit(往往为多个),每个输入分片InputSplit接着被分配给单独的Mapper;
3、提供记录读取器RecordReader的实现,RecordReader被用于从逻辑输入分片InputSplit收集输入记录,这些输入记录会被交由Mapper处理。
基于文件的输入格式的默认行为,作为代表性的子类FileInputFormat,基于输入文件的总大小(单位byte)来切分成逻辑输入分片InputSplit。然而,输入文件的文件系统数据块大小,被用作输入分片大小的上界。输入分片大小的下界则可以在mapred-default.xml配置文件中通过参数mapreduce.input.fileinputformat.split.minsize来配置。
无疑,由于记录界限应该被遵守,基于输入大小的逻辑输入分片不满足很多应用。在这种情况下,应用不得不实现一个记录阅读器RecordReader,以便遵守记录边界,并提出一个面向记录的逻辑输入分片视图给单个任务。
InputFormat是一个抽象类,其中,实现分片的是getSplits()方法,其定义如下:
public abstract List InputSplit getSplits(JobContext context ) throws IOException, InterruptedException;getSplits()方法为作业在逻辑上切分输入文件集合 。每个输入分片将会被分配给单个Mapper进行处理。注意,这个切分只是对输入进行逻辑上的切分,输入文件并不会在物理上被分割成块。比如,一个分片可能是 输入文件路径,起始位置,长度 元组。InputFormat也会创建记录阅读器RecordReader去读取这个输入分片InputSplit。
而提供记录阅读器的是createRecordReader()方法,其定义如下:
public abstract RecordReader K,V createRecordReader(InputSplit split, TaskAttemptContext context ) throws IOException, InterruptedException;createRecordReader()方法为给定分片创建一个记录阅读器。在分片被使用之前,框架将调用RecordReader的initialize(InputSplit, TaskAttemptContext)方法完成初始化。它需要两个参数:
1、InputSplit split:需要被读入的分片;
2、TaskAttemptContext context:任务上下文,存储了任务的相关信息。
《MapReduce 2.0源码分析与编程实战》一导读 我们处于一个数据大爆炸的时代。每时每刻、各行各业都在产生和积累海量的数据内容。这些数据中蕴含着进行业务活动、获取商业信息、做出管理决策的重要信息。如何处理这些数据并获取有价值的信息,是众多组织和单位面临的共同问题。
相关文章
- Netty源码阅读入门实战(八) - 解码下
- 一文详解RocketMQ-Spring的源码解析与实战
- LiteOS内核源码分析:动态内存之Bestfit分配算法
- chainer-图像分类-整体结构设计【附源码】
- 基于python结合dlib实现人脸识别【附源码】
- 基于JSP的网上购物系统的设计与实现(论文+源码)_kaic
- 电子商务购物网站的设计与实现(论文+源码)_kaic
- SSH框架总结(框架分析+环境搭建+实例源码下载)
- vue2.0源码分析之理解响应式架构
- HashMap 源码分析源码分析JDK1.8
- netty源码分析
- 源码安装Postgresql9.4.1
- OpenCvSharp (C# OpenCV) 微信QRCode解码功能使用介绍(附源码)
- Java并发之AQS源码分析(二)
- SpringMVC种通过追踪源码查看是哪种类型的视图渲染器(一般流程方法)
- OBS源码分析流程梳理 流程图图片显示
- libevent源码分析:hello-world例子
- libevent源码分析:signal-test例子
- 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 )
- 使用GDB时对源码路径重新设置
- darwin Stream Server源码分析
- RxJava2.X 源码分析 一
- snabbdom 源码阅读分析
- 【MySQL】MVCC原理分析 + 源码解读 -- 必须说透
- MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考
- Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)
- MapReduce源码分析之JobSplitWriter
- HBase源码分析之HRegion上compact流程分析(一)