2013-05-23 12 views
5

Używam Hadoop 1.0.3 w trybie Pseudo-Distributed. A mój conf/core-site.xml jest ustawiony w następujący sposób:Hadoop: nie można ustawić domyślnego FileSystem jako HDFS w core-site.xml

<configuration> 
    <property> 
     <name>fs.default.name</name> 
     <value>hdfs://localhost:9000</value> 
    </property> 
    <property> 
    <name>mapred.child.tmp</name> 
    <value>/home/administrator/hadoop/temp</value> 
    </property> 
</configuration> 

Dlatego uważa się, że mój domyślny system plików jest ustawiony na HDFS. Jednak, kiedy uruchomić następujący kod:

Configuration conf = new Configuration(); 
FileSystem fs = FileSystem.get(conf); 

Myślałem, że fs powinna być instancją DistributedFileSystem. Jednak okazuje się, że jest to instancja LocalFileSystem.

Ale, jeśli mogę uruchomić następujący kod:

Configuration conf = new Configuration(); 
conf.set("fs.default.name", "hdfs://localhost:9000"); 
FileSystem fs = FileSystem.get(conf); 

Wtedy mogę uzyskać DistributedFileSystem FS.

Czy mój domyślny system plików nie jest ustawiony na HDFS w pliku core-site.xml? Jeśli nie, jak mam to ustawić?

+0

Jak pracujesz/uruchamiasz swoją pracę? Czy możesz dodać więcej kodu? –

+0

@ChrisWhite Czy to zależy od tego, jak prowadzę swoją pracę? Czy domyślny system plików nie powinien być ustawiony na plik hdfs po prawidłowym załadowaniu pliku core-site.xml? – Denzel

+1

Tak, ale jeśli uruchamiasz aplikację z 'java myjar.jar ...' zamiast 'hadoop jar myjar.jar ...', to plik core-site.xml może nie znajdować się w ścieżce klas, a co za tym idzie wygrać ' t być załadowany. Spróbuj wyprowadzić wartość 'fs.default.name' w kodzie po utworzeniu obiektu conf. –

Odpowiedz

4

Środowisko Eclipse nie wie, gdzie znajduje się katalog conf w katalogu instalacyjnym Hadoop, aby znaleźć plik core-default.xml i core-site.xml, chyba że te pliki zostaną dodane do ścieżki klas Eclipse w celu załadowania.

Ponieważ nie są one dodawane w ścieżce zaćmieniowej classpath, domyślny plik core-site.xml zostanie załadowany z pliku jar hadoop - * - core.jar (Dla np .: hadoop-0.20.2-core.jar dla wersji 0.20), który ma system lokalny jako domyślny system plików i dlatego widzisz obiekt LocalFileSystem zamiast DistributedFileSystem.

Tak więc, aby dodać katalog <HADOOP_INSTALL>/conf do eclipse ścieżki klasy projektu, goto właściwości projektu (Project -> Właściwości) -> ścieżka kompilacji Java -> zakładka Biblioteki -> Dodaj folder Klasa zewnętrznego -> Wybierz katalog conf z <HADOOP_INSTALL>

Powyższe powinno dodać twój "/core-site.xml" do swojej ścieżki klasy Eclipse, a wszystkie twoje ustawienia powinny zastąpić domyślne.