wie kann ich mit vielen kleinen Dateien in hadoop arbeiten?

8

Ich bin neu in hadoop und ich arbeite mit einer großen Anzahl von kleinen Dateien in Wordcount Beispiel. Es benötigt eine Menge Map-Aufgaben und führt zu einer Verlangsamung meiner Ausführung.

Wie kann ich die Anzahl der Kartenaufgaben reduzieren?

Wenn die beste Lösung für mein Problem kleine Dateien zu einer größeren Datei cattiert, wie kann ich sie katzen?

    
user1878364 26.01.2013, 21:28
quelle

2 Antworten

7

Wenn Sie etwas wie TextInputFormat verwenden, besteht das Problem darin, dass jede Datei mindestens eine Teilung hat, so dass die obere Grenze der Anzahl der Karten die Anzahl der Dateien ist, was in Ihrem Fall sehr viele sind kleine Dateien werden Sie mit vielen Mappern enden, die nur sehr wenige Daten verarbeiten.

Um hier Abhilfe zu schaffen, sollten Sie CombineFileInputFormat verwenden, das mehrere Dateien in den gleichen Split packt (ich denke bis zur Blockgröße), so dass bei diesem Format die Anzahl der Mapper unabhängig von der Anzahl der Dateien ist Es hängt einfach von der Menge der Daten ab.

Sie müssen Ihr eigenes Eingabeformat erstellen, indem Sie von CombineFileInputFormt aus erweitern. Hier finden Sie eine Implementierung hier . Sobald Sie Ihre InputFormat definiert haben, nennen wir sie wie in der Verbindung CombinedInputFormat , können Sie Ihrem Auftrag sagen, sie zu verwenden, indem Sie:

%Vor%     
Charles Menguy 26.01.2013, 22:01
quelle
3

Cloudera hat irgendwann einen Blog zu Problemen mit kleinen Dateien veröffentlicht. Es ist ein alter Eintrag, aber die vorgeschlagene Methode gilt immer noch.

    
Praveen Sripati 27.01.2013 02:22
quelle

Tags und Links