hadoop - 映射器或化简器如何将数据写入HDFS?

标签 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

    最佳答案

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

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

    关于hadoop - 映射器或化简器如何将数据写入HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564358/

    相关文章:

    hadoop - 当客户端关闭连接时,Hadoop 如何处理未复制的数据?

    hadoop t-file和datablock的关系?

    python - 如何在集群上保存文件

    hadoop - 尝试将hdfs中的csv文件加载到配置单元表时未选择任何行

    hadoop - 无法从 Presto 使用 Cassandra

    hadoop - 为什么要删除io.sort.record.percent?

    java - SQOOP 导出失败

    java - 在 Hadoop 上执行 java 程序

    hadoop - 为 mapreduce 中的键生成多个输出记录

    hadoop - Hue/Hive 用户 root 不允许冒充 Hue