2017-05-02 2 views
0

In this Cloudera Blogpost, in der Replication Abschnitt wurde erläutert, dass die Replikation Speicher auf dem NameNode nicht verbraucht. Ich bin jedoch skeptisch, weil ich weiß, dass der NameNode Informationen über jede Datei sowie ihre Replikate im Hauptspeicher speichert. Wie ist also der Speicherbedarf derselbe mit oder ohne Replikation?Speicher erforderlich für NameNode für Replikate in Hadoop

Antwort

1

Nun Speicherverbrauch hängt davon ab, was Sie meinen, weil es physischen Speicher und virtuellen Speicher (ich rede NameNode hier nur)

In Bezug auf die physischen Speicher, der Cloudera Blog korrekt, da es die Verantwortung des Datanodes ist, mit dem Namennode zu kommunizieren (wenn zum Beispiel nach dem Neustart eine Verbindung hergestellt wird), welche Blöcke er unterhält. Der Nameode speichert nur die Dateisystemstruktur auf dem Datenträger (fsimage- und edits-Dateien).

Jetzt ist die Situation etwas anders, wenn Sie über virtuelle Speicher sprechen, wo man deutlich aus dem Quellcode zu sehen, dass FSNamesystem (die Komponente für die Aufrechterhaltung der FS-Struktur im RAM verantwortlich ist), einen Verweis auf BlockManager. BlockManager für sich behält den Verweis auf BlocksMap bei, der gemäß der Dokumentation die Liste der Datenblöcke mit entsprechenden Blöcken führt.

Diese Klasse verwaltet die Zuordnung von einem Block zu den Metadaten. Die Metadaten des Blocks enthalten derzeit die blockCollection, zu der er gehört, und die Datenblöcke, die den Block speichern.

Wenn Sie den Quellcode des BlockManager durchlaufen kann man deutlich sehen, was und wo die BlocksMap verwendet wird.

Was mir eigentlich einfällt, weil Cloudera Jungs Erfahrung in großen Berechnungen haben und wahrscheinlich die Auswirkungen gemessen haben, ist, dass die Größe dieser Struktur im Vergleich zu den übrigen Metadaten nicht signifikant ist, die der Nameode beachten muss von.

Verwandte Themen