Hadoop MapReduce:具有TextInputFormat的映射程序数

Hadoop MapReduce:具有TextInputFormat的映射程序数,hadoop,mapreduce,hdfs,Hadoop,Mapreduce,Hdfs,对于MapReduce作业产生的映射程序数量,我有点困惑 我在很多地方读到,制图员的数量并不取决于人数 块的数量,但取决于拆分的数量,即映射的数量由InputFormat确定。 映射器={(总数据大小)/(输入拆分大小)} 示例-数据大小为1 TB,输入拆分大小为128 MB Num Mappers=(1*1024*1024)/128=8192 如果我的输入格式是FileInputFormat,那么上面的内容似乎是正确的 但是如果我的输入格式是TextInputFormat呢 假设我有一个大小为

对于MapReduce作业产生的映射程序数量,我有点困惑

我在很多地方读到,制图员的数量并不取决于人数 块的数量,但取决于拆分的数量,即映射的数量由InputFormat确定。 映射器={(总数据大小)/(输入拆分大小)}

示例-数据大小为1 TB,输入拆分大小为128 MB

Num Mappers=(1*1024*1024)/128=8192

如果我的输入格式是FileInputFormat,那么上面的内容似乎是正确的

但是如果我的输入格式是TextInputFormat呢

假设我有一个大小为1GB的文件,默认块大小为128MB(在Hadoop 2.x中),块的数量将是8

该文件为文本文件,每行占用1MB

  • 总行数:1024

  • 每个块中的行总数:128

现在,当我将inputFormat设置为TextInputFormat时,Hadoop将生成多少映射程序


是1024(一行一个)还是8(一块一个)?

你把问题搞糊涂了

以可怕的JAVA Map Reduce中的这个典型示例为例:

FileInputFormat.setInputPaths(job, new Path(baseDir, CONTROL_DIR_NAME));
job.setInputFormat(SequenceFileInputFormat.class);
简而言之:

  • FileInputFormat指定要从中读取数据文件的输入目录。FileInputFormat将读取所有文件并将这些文件分成一个或多个InputSplit。所以你的断言是正确的

  • TextInputFormat是MapReduce的默认InputFormat。还有其他类似的SequenceFileInputFormat。输入拆分始终应用,并且与TextInputFormat的讨论正交


前者是必需的,后者是可选的,因为MR中有一个默认的处理记录的方法。

或者可能只有一个映射器,因为块大小是HDFS特性,不确定TextInputFormat是否使用了它。但是,
TextInputFormat是MapReduce的默认InputFormat
。你能解释一下文档中提到的地方吗?太久以前了,记不得了。本周晚些时候我有空的时候我会去看看的。经过一番挖掘。我找到了。谢谢,Hadoop很难。