我尝试使用Windows-Cygwin在hadoop中运行一个简单的程序。
我可以启动namenode。
但是,jobtracker启动失败,但有例外:
FATAL mapred.JobTracker: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: local
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:162)
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:128)
at org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:2560)
at org.apache.hadoop.mapred.JobTracker.<init>(JobTracker.java:2200)
at org.apache.hadoop.mapred.JobTracker.<init>(JobTracker.java:2192)
at org.apache.hadoop.mapred.JobTracker.<init>(JobTracker.java:2186)
at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:300)
at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:291)
at org.apache.hadoop.mapred.JobTracker.main(JobTracker.java:4978)
我尝试了所有可能的方法来解决这个问题,但是徒劳无功。任何指针都会对我有很大帮助。
Hdfs-site.xml配置:
<configuration><br>
<property>
<name>fs.default.name< /name>
<value>hdfs://localhost:9100</value>
</property>
<property>
<name>mapred.job.tracker< /name>
<value>localhost:9101< /value>
</property>
<property>
<name>dfs.replication< /name>
<value>1</value>
</property>
</configuration>
答案 0 :(得分:13)
问题是以下行应该进入 mapred-site.xml 而不是hdfs-site.xml,
<property>
<name>mapred.job.tracker</name>
<value>localhost:9101</value>
</property>
顺便问一下你为什么要在Windows中运行Hadoop?为了发展?你没有Linux机器或者不愿意安装它?
还有一件事,你通常把这个属性放在core-site.xml而不是hdfs-site.xml,
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9100</value>
</property>
答案 1 :(得分:0)
在处理此页面上的“Pseudo Distributed”示例时遇到了同样的问题:http://hadoop.apache.org/docs/r1.1.2/single_node_setup.html#PseudoDistributed
原来,hadoop根本没有拿起我的conf文件。上面链接中的示例假设您正在安装hadoop(即/Usr/jane/hadoop-1.1.2)。我试图在另一个目录中运行示例。我确定你可以配置hadoop来识别其他'conf'目录,但是我采用了简单的路径并且刚开始在我的hadoop目录中运行。