同一台机器部署两个Hadoop HDFS集群的可行性及端口冲突问题咨询
同一台机器部署两个Hadoop HDFS集群的可行性及端口冲突问题咨询
当然可以在同一台机器上部署两个HDFS集群,核心就是解决端口冲突的问题,我之前帮不少开发者处理过类似需求,给你梳理下具体操作步骤:
准备独立的配置目录
把你现有的Hadoop配置目录复制两份,比如命名为hadoop-cluster1和hadoop-cluster2,这样两个集群的配置完全隔离,不会互相干扰。修改核心配置文件,解决端口冲突
针对每个集群的配置目录,修改以下关键配置:- core-site.xml
- 修改
fs.defaultFS:集群1设为hdfs://localhost:9000,集群2改为hdfs://localhost:9001 - 修改
hadoop.tmp.dir:指定不同的临时目录,比如集群1用/tmp/hadoop-cluster1,集群2用/tmp/hadoop-cluster2,这个参数一定要改,默认临时目录共享会导致数据混乱
- 修改
- hdfs-site.xml
dfs.namenode.http-address:集群1用localhost:50070,集群2用localhost:50071dfs.namenode.secondary.http-address:集群1设为localhost:50090,集群2改为localhost:50091dfs.datanode.address:这就是你碰到的datanode端口冲突点,集群1用默认的localhost:50010,集群2换成localhost:50011dfs.datanode.http.address:集群1localhost:50075,集群2localhost:50076dfs.datanode.ipc.address:集群1localhost:50020,集群2localhost:50021
- core-site.xml
启动每个集群
启动时需要指定对应集群的配置目录,避免混淆:- 先格式化集群1的NameNode:
然后启动集群1的HDFS服务:HADOOP_CONF_DIR=/path/to/hadoop-cluster1 hadoop namenode -formatHADOOP_CONF_DIR=/path/to/hadoop-cluster1 start-dfs.sh - 同理处理集群2,把配置目录换成
/path/to/hadoop-cluster2,先格式化再启动。
- 先格式化集群1的NameNode:
额外注意事项
- 确保两个集群的数据目录、临时目录完全独立,格式化时不要选错路径
- 单机部署两个集群会消耗更多内存和CPU资源,如果你的机器配置不高,可能会出现卡顿或服务启动失败的情况,建议适当调整每个集群的资源分配
- 启动时最好等一个集群完全启动成功后再启动另一个,方便排查启动过程中的问题
备注:内容来源于stack exchange,提问作者Jenny Lian
相关产品推荐
相关产品推荐

