我正在从 Hadoop 读取一个 138MB 的文件,并尝试为每条记录分配序列号。以下是我遵循的方法。
我使用级联读取整个文件,为每条记录分配当前切片编号和当前记录计数器。预计这将对每个块并行运行,并根据存在的块分配唯一的序列号和切片号,即文件的块 0 应该转到映射器编号 0,切片编号将为“0”,而对于块 1,映射器没有 1将切片编号分配为“1”(级联中的切片与 MapReduce 中的输入拆分相同)。还预计切片编号为“0”的记录应该比切片编号为“1”的记录多得多,因为块 0 将是 128 MB,块 1 将是 10 MB。
但是当我看到输出时,我看到两组输入记录的记录数几乎相同,即记录均匀分布在 2 个映射器中。
我还可以看到文件的第一条记录是由 mapper1 而不是 mapper0 读取的。
您能否帮助我理解为什么记录在映射器之间均匀分布?