场景:一个集群有多人使用,假设有两个人,一个人已经在他的用户下配置了一个Hadoop集群,并且一直在跑程序,另一个同学有自己的用户,他对Hadoop做了一些源码更改,想自己搭建一个Hadoop集群(或者他和前一个人不熟,想用自己搭建的Hadoop),这就需要集群上有两个Hadoop,如果配置不好会出现端口冲突的问题,使得两个人配置的Hadoop不能使用。
Hadoop本身也就是由一组Java程序组成,通过Socket绑定到网络端口上进行RPC,因此只要保证以下两点就可以:
- Hadoop在OS上的本地存储路径不冲突
- Hadoop在OS上的网络端口不冲突
1.路径问题:
只需要把hadoop.tmp.dir设置到用户目录下即可
2.端口问题:
Hadoop常用的端口:
HDFS端口如下:
参数 | 描述 | 默认 | 配置文件 | 例子值 |
fs.defaultFS | namenode RPC交互端口 | 8020 | core-site.xml | hdfs://Master:8020 |
dfs.http.address | namenode web管理端口 | 50070 | hdfs-site.xml | 0.0.0.0:50070 |
dfs.datanode.address | datanode控制端口 | 50010 | hdfs-site.xml | 0.0.0.0:50010 |
dfs.datanode.ipc.address | datanode的RPC服务器地址和端口 | 50020 | hdfs-site.xml | 0.0.0.0:50020 |
dfs.datanode.http.address | datanode的HTTP服务器和端口 | 50075 | hdfs-site.xml | 0.0.0.0:50075 |
MapReduce端口如下:
参数 | 描述 | 默认 | 配置文件 | 例子值 |
mapred.job.trackerjob | tracker交互端口 | 8021 | mapred-site.xml | hdfs://master:8021 |
mapred.job.tracker.http.address | jobtracker的web管理端口 | 50030 | mapred-site.xml | 0.0.0.0:50030 |
mapred.task.tracker.http.address | tasktracker的HTTP端口 | 50060 | mapred-site.xml | 0.0.0.0:50060 |
mapreduce.shuffle.port | ShuffleHandler的端口 | 13562 | mapred-site.xml | 13562 |
其他端口:
参数 | 描述 | 默认 | 配置文件 | 例子值 |
dfs.namenode.secondary.http-address | secondary Namenode web管理端口 | 50090 | hdfs-site.xml | 0.0.0.50090 |
以上有些配置是hadoop1.x的,2.x的配置请参考官方文档,大概修改上面几个端口以及目录就可以配置多个hadoop。目录配置也可以参考官方文档进行相应的修改。
Hadoop的目录配置看下图:
![](/public/img/hadoop/directory_configuration.jpg)