最近我读到了map任务将其输出写入本地磁盘而不是HDFS。当我在伪分布式模式中尝试使用Mapreduce代码并且只有map函数而没有reducer时,我发现输出被写入HDFS。为什么会这样? 任何人都可以解释这种情况吗?
答案 0 :(得分:3)
高层次的想法是将mapreduce作业的最终输出写入HDFS,以便它可以用于其他目的,而任何中间数据,即map作业的输出都写入本地(以避免开销)在hdfs中复制数据)然后这个数据由Reducer使用以产生最终输出
因此,在减少器数量为0的情况下,映射器的输出是最终输出,因此写入HDFS。
答案 1 :(得分:2)
在正常的MapReduce作业中,只有Reducer输出被写入HDFS,Map输出/中间数据被写入磁盘.HDFS中的输出文件将等于redurs中的no。
如果我们没有缩减器,即 job.setNumReduceTasks() 设置为 0 。不会运行减速器,并且映射输出将写入HDFS,输出文件将等于映射器的数量。
希望这能回答你的问题。