Я использую Hadoop 1.0.3 в псевдораспределенном режиме. И мой конф/ядро-site.xml устанавливается следующим образом:Hadoop: невозможно установить файловую систему по умолчанию как HDFS в 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>
Поэтому я считал, что моя файловая по умолчанию устанавливается в HDFS. Однако, когда я запускаю следующий код:
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Я думал, что фс должен быть DistributedFileSystem
экземпляр. Однако, это оказывается LocalFileSystem
экземпляра.
Но, если я запускаю следующий код:
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://localhost:9000");
FileSystem fs = FileSystem.get(conf);
Тогда я могу получить DistributedFileSystem
фс.
Не установлена ли моя файловая система по умолчанию для HDFS в файле core-site.xml? Если нет, как мне это установить?
Как вы работаете/запускаете свою работу? Можете ли вы разместить больше кода? –
@ChrisWhite На это влияет то, как я выполняю свою работу? Должна ли стандартная файловая система устанавливать в hdfs после того, как мой файл core-site.xml будет загружен правильно? – Denzel
Да, но если вы запускаете свое приложение с помощью java myjar.jar ... ', а не' hasoop jar myjar.jar ... ', то core-site.xml может быть не в пути к классам и, следовательно, t загрузится. Попробуйте и выведите значение 'fs.default.name' в свой код после создания объекта conf. –