使用Python加载H2O Mojo模型时无法启动集群
解决H2O本地服务器启动失败(WinError 10061)无法加载Mojo模型的问题
从你给出的错误信息来看,核心问题是H2O本地服务器启动失败,导致Python无法建立连接(WinError 10061表示目标端口拒绝连接)。下面是几个我亲测有效的排查和解决方法:
1. 检查端口是否被占用
你指定的54321端口可能已经被其他程序占用了。可以在PowerShell里执行以下命令查看端口占用情况:
netstat -ano | findstr :54321
如果返回结果里有进程ID(PID),说明端口被占用:
- 可以打开任务管理器,找到对应PID的进程并结束它,然后重新运行你的Python代码;
- 或者直接换一个未被占用的端口,比如把
h2o.init里的port参数改成54322,示例代码如下:
import h2o, os os.environ["H2O_DISABLE_STRICT_VERSION_CHECK"] = "true" os.environ["PYTHONUTF8"] = "1" # 更换为未被占用的端口 h2o.init(ip="127.0.0.1", port=54322, start_h2o=True, strict_version_check=False, max_mem_size="2G") from h2o.estimators import H2OGenericEstimator file_path = r"D:/Tests_modèle/model.zip" model = H2OGenericEstimator.from_file(file_path) print("done")
2. 手动启动H2O服务器再连接
有时候自动启动H2O服务器会因为权限或JVM参数问题失败,你可以手动启动:
- 打开命令提示符(或PowerShell),执行以下命令启动H2O服务器(替换成你本地h2o.jar的路径):
java -jar D:\python\Lib\site-packages\h2o\backend\bin\h2o.jar -port 54321
- 保持这个窗口打开,然后运行你的Python代码,注意把
start_h2o改成False(因为服务器已经手动启动了):
import h2o, os os.environ["H2O_DISABLE_STRICT_VERSION_CHECK"] = "true" os.environ["PYTHONUTF8"] = "1" # 连接已手动启动的H2O服务器 h2o.init(ip="127.0.0.1", port=54321, start_h2o=False, strict_version_check=False) from h2o.estimators import H2OGenericEstimator file_path = r"D:/Tests_modèle/model.zip" model = H2OGenericEstimator.from_file(file_path) print("done")
3. 排查JVM启动问题
错误信息里提到了JVM的错误输出文件:C:\Users\DHP\AppData\Local\Temp\tmp_wj3b22t\h2o_DHP_started_from_python.err,你可以打开这个文件查看详细的JVM启动失败原因:
- 如果是内存不足,可以在
h2o.init里添加max_mem_size参数,比如max_mem_size="4G",分配更多内存给H2O; - 如果是JDK版本兼容问题,H2O部分版本对高版本JDK(比如你用的OpenJDK 17)支持有限,可以尝试降级到OpenJDK 11或8,再重新运行代码。
4. 用管理员权限运行
有时候普通用户权限不足以启动H2O服务器,你可以右键点击PowerShell,选择“以管理员身份运行”,然后再执行你的Python脚本。
内容的提问来源于stack exchange,提问作者MysteryGuy
相关产品推荐
相关产品推荐

