hadoop mapreduce中分裂和块之间的关系

时间:2016-10-17 21:16:52

标签: hadoop mapreduce

我试图理解mapreduce的InputFormat类应该如何处理分割和块。

如果我理解正确:

  • 将hdfs文件拆分为块。每个块都保证在特定的机器上,但同一个文件的2个块可以在2台不同的机器上。
  • 分割粗略地定义了一个hdfs文件和一个起始字节偏移量+结束字节偏移量(或者它可以是一个起始行号和结束行号?)
  • 每个映射器将接收具有特定拆分实例的拆分和RecordReader实例。定义N个拆分意味着创建N个映射器和RecordReader,每个拆分一个
  • 然而,分割大小不需要被blocksize整除,反之亦然

这是对的吗?

但是,API要求的RecordReader实例是否严格处理/处理其拆分中的数据?或者是否允许读取其分割范围之外的数据?它是否仍然可以读取文件的任何部分,即使它必须超出当前块? (因此可能以下文件在另一台机器上) 从本质上讲,分裂只是一个"提示"记录阅读器?

因为如果不是这种情况并且分割是严格的,那么我似乎无法处理每个记录具有非固定大小的简单文件。

0 个答案:

没有答案