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ć?
Jak pracujesz/uruchamiasz swoją pracę? Czy możesz dodać więcej kodu? –
@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
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. –