【问题标题】:MapReduce basicsMapReduce 基础知识
【发布时间】:2018-05-25 10:42:42
【问题描述】:

我有一个 300mb 的文本文件,块大小为 128mb。 因此将创建总共 3 个块 128+128+44 mb。 纠正我 - 对于 map reduce,默认输入拆分与可以配置的 128mb 块大小相同。 现在记录阅读器将读取每个拆分并创建键值对,键是偏移量,值是单行。 (文本输入格式) 问题是,如果在我的块的最后一行该块结束但该行确实在另一个块中结束,那么该行的其余部分是否会从不同的节点获取,或者剩余的行是否会在另一个节点中运行。 还有第二个节点如何理解它的第一行已经被处理,不需要再次处理。

例如 这是 stackoverflow。这(块 1 结束/输入拆分)是一个 map reduce 示例。 (行尾)

【问题讨论】:

    标签: mapreduce input-split recordreader


    【解决方案1】:

    将为此场景生成 3 个映射器。 Hadoop 在每个块的末尾使用一个指针来指示下一个块的位置,因此映射器 1 将处理完整的行,这可能是块 2 的一部分,而映射器 2 将通过离开该行开始处理。

    【讨论】: