2010-03-01 11 views
24

Hadoop ma parametr konfiguracyjny hadoop.tmp.dir, który zgodnie z dokumentacją jest "" "Podstawą dla innych katalogów tymczasowych." Zakładam, ta ścieżka odnosi się do lokalnego systemu plików.Co powinno być hadoop.tmp.dir?

Ustawiam tę wartość na /mnt/hadoop-tmp/hadoop-${user.name}. Po sformatowaniu namenodu i uruchomieniu wszystkich usług widzę dokładnie tę samą ścieżkę utworzoną na HDFS.

Czy to oznacza, że ​​hadoop.tmp.dir odnosi się do lokalizacji tymczasowej na HDFS?

+0

Zdecydowanie jest to określenie lokalnej ścieżki do systemu plików, nie wiem, dlaczego to nie działa. – skaffman

Odpowiedz

31

To dziwne, ale hadoop.tmp.dir służy jako podstawa tymczasowych katalogów lokalnie, a także w HDFS. dokument nie jest wielki, ale mapred.system.dir jest ustawiony domyślnie "${hadoop.tmp.dir}/mapred/system", a ta definiuje ścieżkę na HDFS gdzie gdzie Map/Reduce ramowych przechowuje pliki systemowe.

Jeśli nie chcesz, aby były one powiązane , Można edytować mapred-site.xml takie, że definicja mapred.system.dir jest coś, co nie jest związane z ${hadoop.tmp.dir}

+2

jaka jest domyślna ścieżka dla ** hadoop.tmp.dir **, tak jak dla Hadoop 1.2.1? – chenzhongpu

+0

@ChenZhongPu wspomniany w core-site.xml – user1207289

3

Szukałem informacji na ten temat. Jedyne co mogę wymyślić było to stanowisko na Amazon Elastic MapReduce Dev Guide:

W Hadoop-site.xml ustawiamy hadoop.tmp.dir do /mnt/var/lib/Hadoop/tmp./mnt to miejsce, w którym montujemy "dodatkowe" woluminy EC2, , które mogą zawierać o wiele więcej danych niż domyślna wolumin o wartości większej niż . (Dokładna kwota zależy od instancji typu.) Hadoop za RunJar.java (moduł, który rozpakowuje słoiki wejściowych) interpretuje hadoop.tmp.dir jako system plików Hadoop drogę zamiast ścieżki lokalnej, więc pisze do ścieżki w HDFS zamiast ścieżkę lokalną. HDFS jest zamontowany pod /mnt (konkretnie /mnt/var/lib/Hadoop/DFS /. Tak, można napisać dużo danych do niego.

25

Dodam trochę więcej kkrugler za odpowiedź:

Są tam trzy właściwości HDFS które zawierają hadoop.tmp.dir w ich wartości

  1. dfs.name.dir: katalog, w którym namenode przechowuje metadane, o wartości domyślnej ${hadoop.tmp.dir}/dfs/name.
  2. dfs.data.dir: katalog, w którym przechowywane są bloki danych HDFS, z domyślną wartością ${hadoop.tmp.dir}/dfs/data.
  3. : katalog, w którym drugorzędny węzeł nazw zapisuje swoje punkty kontrolne, domyślna wartość to ${hadoop.tmp.dir}/dfs/namesecondary.

Dlatego właśnie zobaczyłeś /mnt/hadoop-tmp/hadoop-${user.name} w HDFS po formatowaniu namenodu.

Powiązane problemy