Spark环境下Deeplearning4j-UI连接被拒绝(java.net.ConnectException)问题求助
解决DL4J-UI连接被拒绝的问题
你的Connection refused错误核心原因是没启动DL4J的Remote UI服务,另外依赖和配置还有几个潜在问题,下面一步步帮你解决:
1. 先启动DL4J的Remote UI服务
RemoteUIStatsStorageRouter是用来把训练数据发送到已经在运行的DL4J UI服务器的,它不会自动帮你启动服务器。有两种方式启动:
方式一:命令行启动(推荐)
找个和你deeplearning4j-ui-model版本一致的deeplearning4j-ui jar包(你用的是1.0.0-beta7),然后执行:
java -jar deeplearning4j-ui-1.0.0-beta7.jar -port 9000
启动后,你可以先在浏览器访问http://localhost:9000确认服务正常,然后把代码里的URL改成http://localhost:9000(你现在用的是https,默认UI服务是HTTP,协议不匹配也会连不上)。
方式二:代码内嵌启动
如果不想单独开一个进程,也可以在你的Spark应用里直接启动UI服务:
// 启动本地UI服务,端口9000 UIServer uiServer = UIServer.getInstance(); StatsStorage statsStorage = new InMemoryStatsStorage(); uiServer.attach(statsStorage); // 把statsStorage传给StatsListener,不用再用RemoteUIStatsStorageRouter StatsListener statsListener = new StatsListener(statsStorage, statsConfig, sessionId); sparkNetwork.setListeners(statsListener);
这种方式不需要远程连接,数据直接写到本地存储,UI会自动读取展示。
2. 修复依赖版本的冲突问题
你的pom.xml里有几个版本不兼容的地方,这会导致各种运行时问题:
- 删掉
nd4j-x86依赖,它的版本是0.4-rc3.8,和你用的1.0.0-beta7的DL4J/ND4J完全不兼容。 - 统一Spark的Scala版本:你现在混用了
spark-core_2.13、spark-sql_2.11和scala-library_2.11,全部改成2.12版本:spark-core_2.13→spark-core_2.12,版本保持3.2.1spark-sql_2.11→spark-sql_2.12,版本改成3.2.1(和Spark Core版本一致)scala-library_2.11.12→scala-library_2.12.15(和Spark 3.2.1兼容的版本)
- 老版本的
bigdl(0.2.0)和DL4J 1.0.0-beta7不兼容,如果不需要就删掉,或者升级到兼容的新版本。
3. 优化Maven打包配置
你同时用了maven-assembly-plugin和maven-shade-plugin,这两个都会打包依赖,容易冲突。DL4J官方推荐用maven-shade-plugin,因为它能正确合并DL4J需要的reference.conf配置文件和服务接口注册。建议删掉maven-assembly-plugin的配置,只保留maven-shade-plugin。
最后验证
- 先启动DL4J UI服务(二选一)
- 修复pom依赖后,用
mvn clean package重新打包 - 提交Spark应用,然后打开
http://localhost:9000就能看到训练监控图表了
内容的提问来源于stack exchange,提问作者nour rekik
相关产品推荐
相关产品推荐

