我在我的windows
上的eclipe执行mapreduce程序时遇到问题,而在同一台机器上运行的hadoop
上运行Pseudo cluster
Ubuntu VM
。
我正在运行hadoop 1.0.3
。我尝试使用eclipse Juno
Ganymede
和eclipse
plugin 1.0.3
,但没有成功。每当我将Linux VM
添加为mapreduce位置时,我都会收到连接错误。
我还尝试通过以下配置直接设置属性,没有更多的运气。我将其作为java application
运行。
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://192.168.65.132:8020/");
conf.set("mapred.job.tracker", "192.168.65.132:8021");
conf.set("hadoop.job.ugi", "hadoop");
我收到以下错误。
13/01/08 09:59:44 INFO ipc.Client: Retrying connect to server: 192.168.65.132/192.168.65.132:8020. Already tried 7 time(s).
13/01/08 09:59:46 INFO ipc.Client: Retrying connect to server: 192.168.65.132/192.168.65.132:8020. Already tried 8 time(s).
13/01/08 09:59:48 INFO ipc.Client: Retrying connect to server: 192.168.65.132/192.168.65.132:8020. Already tried 9 time(s).
Exception in thread "main" java.net.ConnectException: Call to 192.168.65.132/192.168.65.132:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1099)
at org.apache.hadoop.ipc.Client.call(Client.java:1075)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
at $Proxy1.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:396)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:379)
at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:119)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:238)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:203)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1386)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1404)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:254)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:238)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.addInputPath(FileInputFormat.java:372)
at inverika.training.examples.WordCount.main(WordCount.java:37)
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:489)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:434)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:560)
at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:184)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1206)
at org.apache.hadoop.ipc.Client.call(Client.java:1050)
... 17 more
有没有人试过类似的设置?请分享您的经验。
Netstat转储:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 127.0.0.1:8020 :::* LISTEN
tcp6 0 0 127.0.0.1:8021 :::* LISTEN
tcp6 0 0 127.0.0.1:58399 127.0.0.1:8020 ESTABLISHED
tcp6 0 0 127.0.0.1:8020 127.0.0.1:58399 ESTABLISHED
tcp6 0 0 127.0.0.1:45042 127.0.0.1:8021 ESTABLISHED
tcp6 0 0 127.0.0.1:8021 127.0.0.1:45042 ESTABLISHED
答案 0 :(得分:0)
从netstat看,你的伪vm似乎只接受来自它自己(VM)的连接。我希望NN和JT的netstat条目看起来更像这样:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:8020 :::* LISTEN
tcp 0 0 0.0.0.0:8021 :::* LISTEN
我不确定原型是tcp6是否重要,但如果你想在外部连接它们,本地地址应该显示为0.0.0.0:[port]。 127.0.0.1是一个环回地址,因此只能从VM本身接受连接。
您还需要查看VM网络的配置方式(NAT,桥接等) - 如果您无法从Windows cmd行(ping 192.168.65.132
)ping VM地址,那么您将不会能够让Eclipse与VM通信。什么地址192.168.65.132
- 是您的Windows IP地址,还是VM的地址?
因此要解决此问题,您需要重新配置VM网络并修改hadoop配置以使用vm主机名/ IP地址(不是127.0.0.1),或者您可以利用PuTTY之类的东西,创建一些动态的IPv4袜子隧道。
答案 1 :(得分:0)
对于ubuntu我跟着micheal-noll并且它有效。 也许你应该试试这个 http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/