2016-12-07 2 views
0

Ich versuche, eine große Menge von Daten (einige tausend Dateien, die bis zu 19 TB hinzufügen) zu meinem Hadoop-Cluster zu kopieren. Ich bin ein Bash-Schleife über Subsets der Dateien läuft und die mehr Schleifen Ich betreibe das langsamer alles KopienHadoop mehrfache Eingabe-Befehle verlangsamen

for filename in /path/to/my/data/*.csv; 
    do cat $filename | ssh [email protected] "hadoop fs -put - /path/to/new/data/$filename"; 
done 

Das gleiche Problem tritt auf, wenn ich Daten um auf dem Cluster zu bewegen, so dass ich glaube nicht, Es kopiert über das Netzwerk, das das Problem verursacht.

Frage: Kann Hadoop mehrere gleichzeitige put Befehle behandeln? Ist das, was ich sehe, zu erwarten?

Bearbeiten: Cluster-Spezifikationen: 9 Server, 4 Festplatten pro Server, 24 TB auf jedem Knoten verfügbar. Ungefähr ein halbes Dutzend Befehle.

+0

Wie viele Server und Festplatten im Hadoop-Cluster haben Sie? Wie viele parallele Put-Befehle laufen? – gudok

+0

9 Server, 4 Festplatten pro Server, 24 TB auf jedem Knoten verfügbar. Etwa ein halbes Dutzend 'Put'-Befehle. – Sal

Antwort

1

Die HDFS Schreibgeschwindigkeit hängt von mehreren Faktoren

1) Netzwerkgeschwindigkeit

2) Disk-I/O-Geschwindigkeit

3) Anzahl der Datenknoten

4) Replikationsfaktor

5) Dateityp - Ob große Anzahl kleiner Dateien oder große Dateien

6) Nameode und Datanode Java Heap size.

7) Leistung der namenode und datanode Server.

HDFS kann mehrere lesen & Schreibanforderungen behandeln. Wenn eine große Anzahl kleiner Dateien geschrieben wird, werden Schreibanforderungen für jede Datei an den Namen gesendet. Die Schreiboperation wird erst abgeschlossen, nachdem auf n Knoten repliziert wurde, wobei n der Replikationsfaktor ist. Je höher der Replikationsfaktor, desto länger dauert der Schreibvorgang.

Wenn Netzwerk, Festplatte usw. perfekt sind, vergleichen Sie die Leistung nach dem Erhöhen der Heap-Größe von Namenknoten und Datenknoten.