2016-06-24 2 views
2

Ich weiß, dass eine HDFS-Blockgröße 64 MB ist. Aber lassen Sie uns sagen, dass ich eine neue HDFS-Datei erstelle und weiterhin Daten darauf schreibe, aber auf einmal schreibe ich Daten so wenig wie sagen nur 4 KB. Wäre das sehr ineffizient? Am Ende könnte meine Datei 1 GB groß sein, aber macht das Schreiben von Daten nach und nach das Schreiben in eine solche Datei ineffizient? Ich meine, ist es wichtig, meine Daten vor dem Schreiben in die Datei zu puffern. In diesem Fall könnte ich zum Beispiel Daten in einem Puffer sammeln, bis sie eine Größe von 64 MB erreichen, und dann in die HDFS-Datei schreiben und diese Prozedur nach dem Löschen dieses Puffers wiederholen.Wie effizient ist das Schreiben in eine HDFS-Datei in mehreren Schritten?

+0

Welche Methode verwenden Sie, um die Datei zu schreiben? –

+1

Ja, verwenden Sie einen Puffer (oder was auch immer), um in "Brocken" zu schreiben. –

+0

Ich benutze die Bibliothek des Apache zum Schreiben in das HDFS. – pythonic

Antwort

0

Zuerst HDFS Blockgröße ist Ihnen überlassen, der Standard ist konfigurierbar, und Sie können eine andere Blockgröße für eine bestimmte Datei festlegen, wenn Sie es auf HDFS setzen.

Wenn Ihre Daten nicht zur Hand sind, wenn Sie sie in HDFS speichern möchten, verwenden Sie Flume, richten Sie die Quelle für Ihren Datengenerator ein und lassen Sie die Datei auf HDFS laufen und lassen Sie das Tool seine Arbeit ohne kämpfen mit den Details. Wenn sich die Daten in einer Datenbank befinden, können Sie sich auch an Sqoop wenden.

Andernfalls, wenn Sie experimentieren, dann Leistungstests durchführen und prüfen, welcher Ansatz besser ist, hängt es stark davon ab, wie Ihre Daten generiert werden und wie Sie welche Bibliothek verwenden.

+0

@pitfa: Ich denke, er fragt nicht nach Datenaufnahme. Der vorgeschlagene Ansatz für den Kanal- oder SQ-Ansatz kann korrekt sein. –