本地文件系统上的hadoop

vshtjzan  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(438)

我在一个伪分布式系统上运行hadoop。我想通过为我的工作抽象hdfs来从本地文件系统读写。我正在使用 file:/// 参数。我跟踪了这个链接。
这是的文件内容 core-site.xml ,

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value> /home/abimanyu/temp</value>
  5. </property>
  6. <property>
  7. <name>fs.default.name</name>
  8. <value>hdfs://localhost:54310</value>
  9. </property>
  10. </configuration>

这是的文件内容 mapred-site.xml ,

  1. <configuration>
  2. <property>
  3. <name>mapred.job.tracker</name>
  4. <value>localhost:54311</value>
  5. </property>
  6. <property>
  7. <name>fs.default.name</name>
  8. <value>file:///</value>
  9. </property>
  10. <property>
  11. <name>mapred.tasktracker.map.tasks.maximum</name>
  12. <value>1</value>
  13. </property>
  14. <property>
  15. <name>mapred.tasktracker.reduce.tasks.maximum</name>
  16. <value>1</value>
  17. </property>
  18. </configuration>

这是的文件内容 hdfs-site.xml ,

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. </configuration>

这是我在尝试启动恶魔时遇到的错误(使用start dfs或start all),

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

对我来说奇怪的是,这种从本地文件系统读取数据的方式在计算机中完全可以正常工作 hadoop-0.20.2 但不是在 hadoop-1.2.1 . 从最初的版本到后来的版本有什么变化吗?让我知道如何从本地文件系统读取hadoopjar。

epfja78i

epfja78i1#

您可以从mapred-site.xml文件中删除fs.default.name值-该值应仅位于core-site.xml文件中。
如果要在本地文件系统上以伪模式运行,通常可以通过在所谓的本地模式下运行来实现这一点—将core-site.xml中的fs.default.name值设置为file://(您当前已将其配置为hdfs://localhost:54310).
您看到的堆栈跟踪是在次名称节点启动时进行的—在“本地模式”下运行时不需要这样做,因为2nn没有可用于处理的fsimage或edits文件。
修复core-site.xml和mapred-site.xml。停止所有hadoop守护进程,只需启动map reduce守护进程(job tracker和task tracker)。

相关问题