微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hadoop MapReduce 框架原理 | InputFormat 数据输入

文章目录


一、切片与MapTask并行度决定机制

MapTask的并行度决定Map阶段的任务处理并发读,进而影响到整个Job的处理速度,引入两个概念:

  • 数据块:BlockHDFS物理上把数据分成一块一块,数据块是HDFS存储数据单位
  • 数据切片: 只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位一个切片会对应启动一个MapTask

在这里插入图片描述

二、Job提交流程

提交一个Job要经过:

  • 建立连接connect()
    • 在这里会判断该Job是本地运行环境还是YARN集群运行环境
  • 提交JobsubmitJobInternal()
    • 创建给集群提交数据的Stag路径—getStagingDir()
    • 获取JobId,并创建Job路径—getNewJobID()
    • 拷贝jar包到集群—copyAndConfigureFiles()uploadFiles
    • 计算切片,生成切片的规划文件writeSplits
    • Stag路径写XML配置文件writreXml()
    • 最后提交Job,返回提交状态

如下图所示:

在这里插入图片描述

三、切片执行流程解析

在这里插入图片描述

四、FileInputFormat切片机制

切片机制:

  • 简单地按照文件内容长度进行切片
  • 切片的大小认等于Block大小
  • 切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

比如输入数据有两个文件

file1.txt			320M
file2.txt			10M

经过FileInputFormat的切片机制运算后,形成的切片信息如下:

file1.txt.split1			0~128
file1.txt.split2			128~256
file1.txt.split3			256~320
file2.txt.split1			0~19

源码中计算切片大小的公式:

Math.max(minSize,Math.max(maxSize,blockSize));
mapreduce.input.fileinputformat.split.minsize=1		认值为1
mapreduce.input.fileinputformat.split.maxsize=Long.MAXValue		认值Long.MAXValue

认情况下,切片大小=blocksize

切片大小设置:

  • maxsize(切片最大值):参数如果调的比blockSize小,则会让切片变小,而且就等于配置的这个参数值
  • minsize(切片最小值):参数调的比blockSize大,则可以让切片变得比blockSize还大

获取切片信息API:

//获取切片的文件名称
String name = inputSplit.getPath().getName();
//根据文件类型获取切片信息
FileSplit inputSplit = (FileSplit) context.getInputSplit();

五、TextInputFormat

在运行MapReuce程序时,输入的文件格式包括:基于行的日志文件、二进制格式文件数据库表等。针对不同的数据类型,MapReduce用户提供了很多的接口

FileInputFormat常见的实现类包括TextInputFormatkeyvalueTextInputFormatNLineInputFormatCombineTextInputFormat自定义InputFormat

TextInputFormat认的 FileInputFormat 实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量, LongWritable 类型。值是这行的内容,不包括任何行终止 符(换行符和回车符),Text 类型。

以下是一个示例,比如,一个分片包含了如下 4 条文本记录。

Rich learning form
Intelligent learning engine 
Learning more convenient
From the real demand for more close to the enterprise 

每条记录表示为以下键/值对:

(0,Rich learning form)
(20,Intelligent learning engine)
(49,Learning more convenient)
(74,From the real demand for more close to the enterprise)

六、CombineTextInputFormat切片机制

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐