Hadoop в локальной файловой системе

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

Это содержимое файла 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>

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

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.


person Learner    schedule 23.11.2013    source источник
comment
Можете ли вы подробно описать, где именно находятся конфиги, которые вы обновили? Также на что указывает ваша переменная HADOOP_HOME?   -  person Charles Menguy    schedule 23.11.2013
comment
У меня установлен hadoop в /home/abimanyu/binaries. Так что я предполагаю, что это мой HADOOP_HOME.   -  person Learner    schedule 23.11.2013


Ответы (1)


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

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

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

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

person Chris White    schedule 23.11.2013