【发布时间】:2015-02-18 02:03:21
【问题描述】:
在MapReduce程序中,我们只需设置输出路径FileOutputFormat.setOutputPath,然后使用mapper或reducer的context.write(key, value)将结果写入HDFS文件;
文件写入概念实际上是如何工作的?
-
Mapper/Reducer 将不断地发出记录。
每条记录会直接发送到HDFS吗?
或
一旦申请完成,它会发送copyFromLocal?
或
它在本地文件系统中为每个 mapper 或 reducer 创建一个临时文件?
【问题讨论】:
-
映射任务刷新本地磁盘中的数据(“溢出记录”是其名称)。减少任务将数据发送到 HDFS。
-
当你说“Reduce 任务向 HDFS 发送数据”时,是否意味着 Map reduce 将数据附加到文件中?
-
我不知道 Map Output 的实现细节,但我记得在某处读过哪个 Map 操作以 SequenceFile 格式写入输出,每个文件的大小为 io.file.buffer.size。在此之前会执行组合器,排序操作会读取这些文件。但我现在没有任何参考资料。