如何配置Hadoop集群避免主节点存储数据,关闭主节点DataNode角色?
Hadoop集群排除主节点作为DataNode的配置方案
配置未生效原因说明
修改slaves(Hadoop 3.x更名为workers)文件仅会影响start-dfs.sh、start-all.sh等批量启动脚本的执行逻辑,不会自动停止主节点上已经运行的DataNode进程,也无法阻止手动启动、自启等其他方式拉起的DataNode进程,这是之前修改未生效的核心原因。
完整操作步骤
1. 停止主节点已运行的DataNode进程
- 登录主节点,执行
jps命令,确认当前运行的DataNode进程ID - 执行命令
hdfs --daemon stop datanode停止DataNode进程,也可以直接kill对应进程ID - 再次执行
jps,确认DataNode进程已被终止
2. 更新批量启动的节点列表
- Hadoop 2.x版本:修改
$HADOOP_CONF_DIR/slaves文件,删除主节点的主机名/IP,仅保留25台从节点的地址 - Hadoop 3.x版本:修改
$HADOOP_CONF_DIR/workers文件,操作同上 - 将修改后的配置文件同步到所有从节点的相同配置目录下,避免后续批量操作出现配置不一致问题
3. 配置DataNode白名单(推荐,彻底屏蔽主节点)
为避免后续误操作在主节点拉起DataNode并加入集群,建议通过白名单配置做硬限制:
- 修改
$HADOOP_CONF_DIR/hdfs-site.xml,新增如下配置项:
<property> <name>dfs.hosts</name> <value>$HADOOP_CONF_DIR/dfs.include</value> </property>
- 在
$HADOOP_CONF_DIR目录下新建dfs.include文件,逐行写入25台允许作为DataNode的从节点的主机名/IP,不要写入主节点的地址 - 将修改后的
hdfs-site.xml、dfs.include同步到集群所有节点的对应配置目录 - 登录主节点执行
hdfs dfsadmin -refreshNodes刷新节点列表,配置无需重启集群即可生效
4. 验证配置结果
执行hdfs dfsadmin -report查看当前集群活跃的DataNode列表,确认主节点不在列表中,且总DataNode数量为25台,即配置生效。
内容的提问来源于stack exchange,提问作者mash
相关产品推荐
相关产品推荐

