在一个集群中,尽管是多用户,但是端口是公用的,存在冲突的可能。如果另一个用户已经采用默认配置安装了hadoop,那么当前用户再安装hadoop时,必然会产生端口的冲突。在配置自己的hadoop时,可以自己配置datanode,namenode所需要的端口,避免冲突。

      下述方法也可以用来解决一类因为端口冲突导致datanode、namenode和resourcemanager无法启动的问题。如果通过jps查看不到相应的进程,查看对应的日志,如果是端口冲突,就可以考虑用下文的方法来解决。

      首先,选取一些空闲的端口,我这里选择的是50051-50062一系列端口。

      hadoop版本为2.2.0,安装的方法网上有很多,就不介绍了,这里主要介绍如果和其他用户的hadoop产生端口冲突时需要设置哪些自己的端口。需要设置的参数可以参考hadoop官网:http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/ClusterSetup.html。在网页左下角有各个配置文件的参数信息。

      修改端口配置的步骤是对照日志文件来查看冲突的端口有哪些,然后在相应的配置文件中去修改这个端口就可以了。

1、hdfs-site.xml

      这里修改hdfs相关的端口。

 1 <property>
 2         <name>dfs.namenode.scondary.http-address</name>
 3         <value>node01:9001</value>
 4 </property>
 5 <property>
 6         <name>dfs.datanode.address</name>
 7         <value>0.0.0.0:50051</value>
 8 </property>
 9 <property>
10         <name>dfs.datanode.http.address</name>
11         <value>0.0.0.0:50052</value>
12 </property>
13 <property>
14         <name>dfs.namenode.http-address</name>
15         <value>node01:50053</value>
16 </property>
17 <property>
18          <name>dfs.datanode.ipc.address</name>
19          <value>0.0.0.0:50055</value>
20 </property>

2、yarn-site.xml

      这里修改与yarn相关的代码,日志文件为yarn-username-nodemanager等开头的文件。

 1 <property>
 2         <name>yarn.resourcemanager.address</name>
 3         <value>node01:50056</value>
 4 </property>
 5 <property>
 6         <name>yarn.resourcemanager.scheduler.address</name>
 7         <value>node01:50057</value>
 8 </property>
 9 <property>
10         <name>yarn.resourcemanager.resource-tracker.address</name>
11         <value>node01:50058</value>
12 </property>
13 <property>
14         <name>yarn.resourcemanager.admin.address</name>
15         <value>node01:50059</value>
16 </property>
17 <property>
18         <name>yarn.resourcemanager.webapp.address</name>
19         <value>node01:9090</value>
20 </property>
21 <property>
22         <name>yarn.nodemanager.localizer.address</name>
23         <value>0.0.0.0:50060</value>
24 </property>
25 <property>
26         <name>yarn.nodemanager.webapp.address</name>
27         <value>0.0.0.0:50062</value>
28 </property>

3、mapred-site.xml

      这里修改mapreduce相关的参数。下文中的10020和19888没有冲突,所以没有改成50062以后的端口。

 1 <property>
 2        <name>mapreduce.jobhistory.address</name>
 3         <value>0.0.0.0:10020</value>
 4 </property>
 5 <property>
 6        <name>mapreduce.jobhistory.webapp.address</name>
 7        <value>0.0.0.0:19888</value>
 8 </property>
 9 <property>
10        <name>mapreduce.shuffle.port</name>
11         <value>50061</value>
12 </property>

      总结:端口的冲突很好解决,只需要到网站所提供的各个配置文件中找到相应的冲突端口所在的参数,然后到配置文件更改就行了。