hadoop中的SUCCESS和part-r-00000文件是啥

Posted

技术标签:

【中文标题】hadoop中的SUCCESS和part-r-00000文件是啥【英文标题】:What are SUCCESS and part-r-00000 files in hadoophadoop中的SUCCESS和part-r-00000文件是什么 【发布时间】:2012-05-26 20:18:17 【问题描述】:

虽然我经常在我的 Ubuntu 机器上使用 Hadoop,但我从未想过 SUCCESSpart-r-00000 文件。输出总是驻留在part-r-00000 文件中,但是SUCCESS 文件有什么用呢?为什么输出文件的名称为part-r-0000?是否有任何意义/任何命名法,或者这只是随机定义的?

【问题讨论】:

【参考方案1】:

见http://www.cloudera.com/blog/2010/08/what%E2%80%99s-new-in-apache-hadoop-0-21/

成功完成作业后,MapReduce 运行时会在输出目录中创建一个 _SUCCESS 文件。这对于需要仅通过检查 HDFS 来查看结果集是否完整的应用程序可能很有用。 (MAPREDUCE-947)

这通常由作业调度系统(例如 OOZIE)使用,表示在所有数据都已输出时可以开始对该目录内容的后续处理。

更新(回应评论)

输出文件默认命名为 part-x-yyyyy 其中:

x 是“m”或“r”,具体取决于作业是仅地图作业还是减少 yyyyy 是 mapper 或 reducer 任务编号(从零开始)

因此,具有 32 个 reducer 的作业将具有名为 part-r-00000 到 part-r-00031 的文件,每个 reducer 任务一个。

【讨论】:

这并不能解释为什么输出文件被称为part-r-00000,或者这是否总是如此。 已更新以专门针对@KyleStrand 评论 请注意:目前 (hadoop-streaming-2.4.0.2.1.1.0) 如果您碰巧使用 hadoop-streaming,则没有 x。所以它会像part-00000 有些结果集有 _SUCCESS 文件,有些则没有。例如,当使用 Pig 中的 SAVE 时,是否需要为完成后创建的 _SUCCESS 文件设置一个选项?

以上是关于hadoop中的SUCCESS和part-r-00000文件是啥的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop pig加入时间范围

将不同文件夹的 map-reduce 输出合并到单个文件夹中

shuffle阶段

$.ajax()中的success和error的使用注意事项

jquery.validate中的errorPlacement success unhighlight等共用问题

ambari 搭建hadoop大数据平台系列6-验证测试