2013-11-23 3 views
3

Я запускаю Hadoop на псевдораспространении. Я хочу читать и писать из локальной файловой системы, абстрагируя HDFS для своей работы. Использую параметр file:///. Я последовал this link.Hadoop на локальной файловой системе

Это файл содержимое core-site.xml,

<configuration> 
<property> 
    <name>hadoop.tmp.dir</name> 
    <value> /home/abimanyu/temp</value> 
</property> 

<property> 
    <name>fs.default.name</name> 
    <value>hdfs://localhost:54310</value> 
</property> 

</configuration> 

Это файл содержимое mapred-site.xml,

<configuration> 

<property> 
    <name>mapred.job.tracker</name> 
    <value>localhost:54311</value> 
</property> 

<property> 
    <name>fs.default.name</name> 
    <value>file:///</value> 
</property> 

<property> 
    <name>mapred.tasktracker.map.tasks.maximum</name> 
    <value>1</value> 
</property> 

<property> 
    <name>mapred.tasktracker.reduce.tasks.maximum</name> 
    <value>1</value> 
</property> 

</configuration> 

Это файл содержимое hdfs-site.xml,

<configuration> 

<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
</property> 
</configuration> 

Это ошибка, я получаю, когда я пытаюсь запустить демон (с использованием старта-Б и запуском всех),

localhost: Exception in thread "main" java.lang.IllegalArgumentException: Does not contain a valid host:port authority: file:/// 
localhost:  at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:164) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:212) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:244) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.NameNode.getServiceAddress(NameNode.java:236) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:194) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:150) 
localhost:  at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:676) 

Что странно для меня является то, что это чтение из локальной файловой системы работает совершенно нормально в hadoop-0.20.2 но не в hadoop-1.2.1. Что-то изменилось с первого выпуска на более позднюю версию? Дайте мне знать, как читать из локальной файловой системы для JAR Hadoop.

+0

Можете указать, где именно точно настроились настройки? Также, на что указывает ваша переменная HADOOP_HOME? –

+0

У меня hasoop установлен на '/home/abimanyu/binaries'. Поэтому я полагаю, что это мой HADOOP_HOME. – Learner

ответ

6

Вы можете удалить значение fs.default.name из файла mapred-site.xml - это должно быть только в файле core-site.xml.

Если вы хотите запустить локальную файловую систему в псевдо-режиме, это обычно достигается за счет запуска в так называемом локальном режиме - путем установки значения fs.default.name в файле core-site.xml в файл: /// (в настоящее время он настроен для hdfs: // localhost: 54310).

Трассировка стека, которую вы видите, - это когда запускается дополнительный узел имен - это не требуется при запуске в локальном режиме, так как нет файла fsimage или edits для работы 2NN.

Исправьте свой основной сайт.xml и mapred-site.xml. Остановите всех демонов-хаупов и просто запустите демоны для создания карт (Job Tracker и Task Tracker).

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