You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下使用HBase-testing-util出现All datanodes are bad错误

解决HBase Testing Utility 1.2.0在Windows 10下的Datanode异常问题

我之前在Windows环境用IntelliJ跑HBase Testing Utility的时候也踩过类似的坑,给你几个针对性的解决方案:

1. 先解决核心的Datanode报错问题

你遇到的All datanodes 127.0.0.1:54655 are bad错误,大概率是因为迷你集群的HDFS副本数配置不合理。默认HDFS的副本数是3,但你用的是单节点迷你集群,只有一个Datanode,根本满足不了3副本的要求,系统就会判定所有Datanode都不可用。

解决方法很简单,在初始化HBaseTestingUtility的时候手动设置副本数:

Configuration conf = HBaseConfiguration.create();
// 把HDFS副本数设为1,适配单节点集群
conf.set("dfs.replication", "1");
// 同时可以在这里设置mapred.max.split.size
conf.set("mapred.max.split.size", "134217728"); // 示例:128MB,单位是字节
HBaseTestingUtility utility = new HBaseTestingUtility(conf);
utility.startMiniCluster();

2. 修改mapred.max.split.size的文件位置

如果你不想在代码里硬编码参数,也可以通过修改Hadoop配置文件来设置:

  • 找到你的HADOOP_HOME目录下的etc/hadoop文件夹
  • 如果没有mapred-site.xml,就复制mapred-site.xml.template并重命名为mapred-site.xml
  • 打开文件,添加以下配置段:
<property>
  <name>mapred.max.split.size</name>
  <value>134217728</value> <!-- 按需调整数值,单位为字节 -->
</property>

不过要注意:HBase Testing Utility启动的迷你集群可能会优先使用代码中设置的配置,所以如果代码里有覆盖,配置文件的修改可能不会生效。

3. Windows环境额外注意事项

  • 确保HADOOP_HOME下的bin目录里有对应版本的winutils.exe,Windows下运行Hadoop相关工具必须依赖它,版本要和你的Hadoop(这里是1.2.0)匹配,否则会出现各种权限或启动异常。
  • 检查core-site.xml里的hadoop.tmp.dir配置,路径要选没有空格的(比如D:\hadoop_tmp),且你有读写权限,避免临时目录权限不足导致Datanode启动失败。

内容的提问来源于stack exchange,提问作者Marco Catalano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:21:02