2012-05-19 8 views
31

Obwohl ich Hadoop häufig auf meinem Ubuntu-Rechner benutze, habe ich nie über SUCCESS und part-r-00000 Dateien nachgedacht. Die Ausgabe befindet sich immer in part-r-00000 Datei, aber was ist die Verwendung von SUCCESS Datei? Warum hat die Ausgabedatei den Namen part-r-0000? Gibt es irgendeine Bedeutung/irgendeine Nomenklatur oder ist das nur zufällig definiert?Was sind SUCCESS und part-r-00000 Dateien in hadoop

Antwort

57

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

Auf dem erfolgreichen Abschluss eines Auftrags Siehe, erstellt die MapReduce-Laufzeit eine _SUCCESS Datei im Ausgabeverzeichnis. Dies kann für Anwendungen nützlich sein, die sehen müssen, ob eine Ergebnismenge vollständig ist, indem Sie HDFS untersuchen. (MapReduce-947)

Dies würde in der Regel durch Job-Scheduling-Systeme (wie Oozie) verwendet werden, um anzuzeigen, dass Folgeverarbeitung auf dem Inhalt dieses Verzeichnisses kann beginnen, da alle Daten ausgegeben worden sind.

aktualisieren (als Antwort auf Kommentar)

Die Ausgabedateien standardmäßig Teil-x-yyyyy genannt werden, in denen:

  • x ist entweder 'm' oder 'r', je nachdem, ob der Job war eine Karte nur Job, oder reduzieren
  • yyyyy der Mapper oder Minderer Task-Nummer (Null basierend)

Ein Job, der 32 Reduzierstücke hat, wird also Dateien mit dem Namen part-r-00000 nach part-r-00031 haben, eines für jede Reduzierertask.

+0

Das erklärt nicht, warum die Ausgabedatei 'part-r-00000' genannt wird, oder ob dies auch immer notwendigerweise der Fall ist. –

+0

Aktualisiert, um @KyleStrand-Kommentar speziell zu adressieren –

+2

Beachten Sie: Derzeit ('hadoop-streaming-2.4.0.2.1.1.0') gibt es kein' x', wenn Sie hadoop-streaming verwenden. Also wird es wie 'part-00000'. – masu