2013-05-23 1 views
5

Я использую 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? Если нет, как мне это установить?

+0

Как вы работаете/запускаете свою работу? Можете ли вы разместить больше кода? –

+0

@ChrisWhite На это влияет то, как я выполняю свою работу? Должна ли стандартная файловая система устанавливать в hdfs после того, как мой файл core-site.xml будет загружен правильно? – Denzel

+1

Да, но если вы запускаете свое приложение с помощью java myjar.jar ... ', а не' hasoop jar myjar.jar ... ', то core-site.xml может быть не в пути к классам и, следовательно, t загрузится. Попробуйте и выведите значение 'fs.default.name' в свой код после создания объекта conf. –

ответ

4

Окружающая среда Eclipse не знает, где находится каталог conf в каталоге Hadoop, чтобы найти файл core-default.xml и core-site.xml, если эти файлы не добавлены в путь класса Eclipse для загрузки в первую очередь.

Поскольку они не добавлены в путь класса eclipse, по умолчанию файл core-site.xml будет загружен из файла jar hasoop - * - core.jar (например, hasoop-0.20.2-core.jar для версии 0.20), который имеет локальную систему как файловую систему по умолчанию и, следовательно, вы видите объект LocalFileSystem вместо DistributedFileSystem.

Таким образом, чтобы добавить каталог <HADOOP_INSTALL>/conf затмить пути к классам проекта, Гото свойства проекта (проект -> Свойства) -> Java сборки путь -> вкладка Библиотеки -> Добавить папку внешний класс -> Выберите каталог конф из <HADOOP_INSTALL>

Вышеупомянутый должен добавить ваш `/core-site.xml 'в ваш путь к классу eclipse, и все ваши настройки должны переопределить значения по умолчанию.

Смежные вопросы