2013-07-23 27 views
8

Zmniejszyłem współczynnik replikacji z 3 na 1, ale nie widzę żadnej aktywności z nazwy identyfikacyjnej lub między datanodami, aby usunąć nadmiernie zreplikowane bloki plików HDFS. Czy istnieje sposób monitorowania lub wymuszania zadania replikacji?Zredukowany współczynnik replikacji HDFS

Odpowiedz

18

Zmiana dfs.replication będzie dotyczyć tylko nowych plików, które utworzysz, ale nie zmodyfikuje współczynnika replikacji dla już istniejących plików.

Aby zmienić współczynnik replikacji plików, które już istnieją, można uruchomić następujące polecenie, które ma zostać uruchomiony rekursywnie na wszystkich plikach w HDFS:

hadoop dfs -setrep -w 1 -R/
+0

Czy nie powinien to być 'hadoop fs -setrep -w 1 -R /'? – zeekvfu

+0

Idealnie powinno być 'hadoop fs'. Ale chociaż 'hadoop dfs' jest przestarzałe to nadal działa. – daemon12

+1

@zeekvfu, w efekcie, z ostatnią wersją apache hdfs musi to być: hdfs dfs -setrep -w 2 -R / –

-7

Może można napisać funkcję mapy, aby usunąć bloki plików!

4

Po zmianie domyślnego czynnika replikacji od 3 do powiedzmy 2 od menedżera cloudera

Cloudera Manager(CDH 5.0.2) -> HDFS -> Configuration -> View and Edit -> Service-Wide -> Replication -> Replication Factor (dfs.replication) -> 2 

wtedy tylko nowe zapisane dane będą miały 2 repliki dla każdego bloku.

Proszę używać

hdfs dfs -setrep 2/

na linii poleceń (zazwyczaj z HDFS węzła bramy Role), jeśli chcesz zmienić współczynnik replikacji wszystkich istniejących danych. To polecenie rekursywnie zmienia współczynnik replikacji wszystkich plików w katalogu głównym /.

Składnia:

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 

referencyjny:

http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.2.0-cdh5.0.0-beta-2/hadoop-project-dist/hadoop-common/FileSystemShell.html#setrep

0

Nowy czynnik replikacji wpływa tylko nowe pliki. Aby zmienić współczynnik replikacji na istniejące pliki uruchomić w skorupkach (na węźle z punktu wejścia Hadoop)

hadoop fs -setrep -w <replication factor> -R/

Ale tylko „HDFS” może zapisywać/(„HDFS” jest superużytkownikiem, a nie „root”). Być może będziesz musiał to uruchomić:

sudo -u hdfs hadoop fs -setrep -w <replication factor> -R/