2013-11-23 139 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> 

这是我的错误,当我尝试启动魔(使用启动DFS或开始 - 所有),

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。从初始版本到最新版本有什么变化吗?让我知道如何从本地文件系统读取Hadoop JAR。

+0

您能否详细说明您更新的配置完全位于何处?你的HADOOP_HOME变量指向什么? –

+0

我把hadoop安装在'/home/abimanyu/binaries'.So我想这是我的HADOOP_HOME。 – Learner

回答

6

您可以从您的mapred-site.xml文件中删除fs.default.name值 - 这应该只在core-site.xml文件中。

如果你想在本地文件系统上运行,在伪模式下,通常通过运行在本地模式下 - 通过将core-site.xml中的fs.default.name值设置为file: ///(您目前已将其配置为hdfs:// localhost:54310)。

您看到的堆栈跟踪是当辅助名称节点启动时 - 在'本地模式'下运行时不需要,因为没有针对2NN的fsimage或编辑文件。

修复您的core-site.xml和mapred-site.xml。停止所有hadoop守护进程,并启动map-reduce守护进程(Job Tracker和Task Tracker)。

相关问题