mapper或reducer如何将数据写入HDFS?

时间:2015-02-17 14:59:46

标签: hadoop hdfs

在MapReduce程序中,我们只设置输出路径FileOutputFormat.setOutputPath并使用mapper或reducer的context.write(key, value)将结果写入HDFS文件;

文件编写概念的实际效果如何?

  • Mapper / Reducer将不断发出记录。

    是否会将每条记录直接发送到HDFS?

申请完成后,它会执行copyFromLocal

它为每个映射器或缩减器在本地文件系统中创建临时文件吗?

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0

1 个答案:

答案 0 :(得分:0)

记录被写入字节流,并定期刷新到HDFS上的磁盘。每个记录都不是单独写的,因为这将是一个非常昂贵的操作。此外,数据也不会再写入本地文件系统,这将是一项非常昂贵的操作。

每当我对Hadoop中的事情有疑问时,我倾向于利用其开源特性并深入研究源代码。在这种情况下,您需要查看输出数据时使用的类 - TextOutputFormat和FSDataOutputStream。