你点击view中的小象图标,很可能会报一个错误:
Cannot connect to the Map/Reduce location: hadoop@ubuntu1
java.io.IOException: Unknown protocol to name node: org.apache.hadoop.mapred.JobSubmissionProtocol
at org.apache.hadoop.dfs.NameNode.getProtocolVersion(NameNode.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:452)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:888)
我也遇到这个问题,很让我郁闷,我愿想是不是我的服务器哪里出了问题?后来才知道,是我的端口配置错误了,我在hadoop-site.xml中不是配置了:
<property>
<name>fs.default.name</name>
<value>hdfs://ubuntu1:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://ubuntu1:9001</value>
</property>
这两个端口很重要,9000是namenode的监听端口,而9001是jobtracker的监听端口,在图3的界面上新建DFS location时候,可以看到Map/Reduce Master,当时我还没弄明白,这是什么意思,现在才知道,这是jobtracker所在机器及监听端口,于是我设置成:host=ubuntu1,port=9001,而DFS Master中勾选Use M/R Master Host(意思是:是否使用与JobTracker相同的主机?)我的当然是勾上。端口当然也就是9000了,即host=ubuntu1,port=9000。
于是,连接the Map/Reduce location就不会再出现错误了。下面的用户是cdh,因为我的所有的ubuntu都是cdh的用户的。