Ich habe den Replikationsfaktor von 3 auf 1 reduziert, sehe jedoch keine Aktivität aus dem Namenode oder zwischen den Daten, um übermäßig replizierte HDFS-Dateiblöcke zu entfernen. Gibt es eine Möglichkeit, den Replikationsauftrag zu überwachen oder zu erzwingen?HDFS reduzierter Replikationsfaktor
Antwort
Die Änderung dfs.replication
wird nur auf neue Dateien angewendet, die Sie erstellen, ändert jedoch nicht den Replikationsfaktor für die bereits vorhandenen Dateien.
Um Replikationsfaktor für Dateien zu ändern, die bereits vorhanden ist, können Sie den folgenden Befehl ausführen, die auf alle Dateien in HDFS rekursiv ausgeführt werden soll:
hadoop dfs -setrep -w 1 -R/
Vielleicht können Sie eine Map-Funktion schreiben, um die Dateiblöcke zu entfernen!
Wenn Sie den Standard-Replikationsfaktor von 3 zu ändern ist, lassen sagen 2 von cloudera Manager
Cloudera Manager(CDH 5.0.2) -> HDFS -> Configuration -> View and Edit -> Service-Wide -> Replication -> Replication Factor (dfs.replication) -> 2
dann wird für jeden Block 2 Repliken nur neue Daten geschrieben haben.
Bitte verwenden
hdfs dfs -setrep 2/
auf der Kommandozeile (in der Regel einen Knoten mit HDFS Gateway-Rolle), wenn Sie den Replikationsfaktor aller vorhandenen Daten ändern möchten. Dieser Befehl ändert rekursiv den Replikationsfaktor aller Dateien im Stammverzeichnis /.
Syntax:
hdfs dfs -setrep [-R] [-w] <numReplicas> <path>
where
-w flag requests that the command wait for the replication to complete and can take a very long time
-R flag is just for backwards compatibility and has no effect
Referenz:
Der neue Replikationsfaktor wirkt sich nur auf neue Dateien. Um Replikationsfaktor für vorhandene Dateien in der Schale (auf dem Knoten mit hadoop Einstiegspunkt) laufen
hadoop fs -setrep -w <replication factor> -R/
Aber nur „hdfs“ schreiben kann/(„hdfs“ ist der Superuser, nicht „root“). So kann, werden Sie dies ausführen müssen:
sudo -u hdfs hadoop fs -setrep -w <replication factor> -R/
- 1. Ist Pythons reduzierter() Kurzschluss?
- 2. Cassandra-Replikationsfaktor bei mehreren Datenzentren
- 3. Cassandra: größerer Replikationsfaktor = schneller lesen?
- 4. Numerische Daten mit reduzierter Genauigkeit
- 5. Verallgemeinerter reduzierter Gradient (GRG2) -Algorithmus in R
- 6. Definieren von Partialfunktionen mit reduzierter Arit
- 7. HDFS Dateibeobachter
- 8. Wie erhält man den Replikationsfaktor von C * -Cluster?
- 9. Android ExpandableListView, wie erweiterter/reduzierter Status gespeichert wird?
- 10. Erweiterter/reduzierter Status nach dem Schließen der Datei nicht gespeichert
- 11. Fehler beim Schreiben auf HDFS mit Kafka HDFS Connect
- 12. wie die hadoop-hdfs-Protokolle unter/var/log/hadoop-hdfs
- 13. Zusammenführen von hdfs-Dateien
- 14. Hdfs Dateiliste in Scala
- 15. HDFS-Verschlüsselung mit Java
- 16. Dateipfad in hdfs
- 17. CloudStore vs. HDFS
- 18. Verzeichnis in hdfs umbenennen
- 19. Spark iterate HDFS Verzeichnis
- 20. schreiben Log4j Ausgabe HDFS
- 21. Funkenspar Ergebnisse zu HDFS
- 22. Datei aus HDFS übertragen
- 23. Schleife durch hdfs Verzeichnisse
- 24. Spark: hdfs Cluster-Modus
- 25. HDFS: Entfernen von Verzeichnissen
- 26. Sperren eines Verzeichnisses in HDFS
- 27. Hadoop: map/reduce von HDFS
- 28. Hadoop HDFS-Kopie mit Platzhaltern?
- 29. Unterschied zwischen HDFS und NFS?
- 30. Schreiben auf HDFS mit Python
Sollte es nicht sein 'hadoop fs -setrep -w 1 -R /'? – zeekvfu
Idealerweise sollte es 'hadoop fs' sein. Aber obwohl "hadoop dfs" veraltet ist, funktioniert es immer noch. – daemon12
@zeekvfu, in der Tat, mit der letzten Version von Apache hdfs muss es sein: hdfs dfs -setrep -w 2 -R / –