Windows7下Apache Drill 1.13.0嵌入式模式无法访问控制台及命令行
Apache Drill 1.13.0嵌入式模式"no current connection"及Web控制台无法访问问题排查与解决
我来帮你分析并解决这个Apache Drill嵌入式模式的问题:
问题场景
我在Windows 7系统中使用嵌入式模式(embedded mode)的Apache Drill 1.13.0时遇到以下问题:
- 执行任何查询时均提示
"no current connection"错误- 本该运行在
localhost:8047的Drill Web控制台也无法访问- 已尝试使用
jps工具检查进程,也试过访问localhost:12080,但问题仍未解决
相关问题截图
核心错误分析
从你提供的Drill日志里,我发现了导致问题的关键原因:
2018-06-29 13:09:21,673 [main] WARN o.a.drill.exec.util.GuavaPatcher - Unable to patch Guava classes. javassist.CannotCompileException: by java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "com/google/common/base/Stopwatch"
这个报错说明Drill在初始化时,尝试修补Guava库的Stopwatch类失败了——类加载器已经加载过这个类,导致重复定义冲突。这种冲突会直接阻碍Drillbit(Drill的核心服务进程)正常启动,自然就会出现连接失败、Web控制台无法访问的问题。
解决方案步骤
1. 先确认Java版本兼容性
Apache Drill 1.13.0只支持Java 8(推荐Update 101及以上版本),Java 9及更高版本是不兼容的。你可以打开命令提示符,执行:
java -version
如果你的Java版本低于8u101,或者用了Java 9+,先升级到符合要求的Java 8版本。
2. 修复Guava类冲突问题
针对这个类重复定义的错误,有两种可行的解决方法:
方法一:禁用Guava自动修补功能
找到Drill安装目录下的bin/drill-embedded.cmd(Windows系统的启动脚本),用文本编辑器打开它,在启动Java的命令行中添加参数-Ddrill.exec.guava.patch.disable=true。
修改后的启动命令大概是这样:
java -Ddrill.exec.guava.patch.disable=true -cp "%CLASSPATH%" org.apache.drill.jdbc.Driver
保存后,重新启动嵌入式模式的Drill。
方法二:替换兼容的Guava依赖包
- 进入Drill安装目录的
jars文件夹,找到旧的Guava jar包(比如guava-xxx.jar) - 下载与Drill 1.13.0兼容的
guava-19.0.jar,替换掉旧的jar包 - 重启Drill即可
3. 验证启动状态
重启后,你可以做这些验证:
- 看命令行输出有没有
Drillbit started successfully的提示 - 尝试执行简单查询:
SELECT * FROM sys.version; - 再次访问
localhost:8047,如果还是不行,检查conf/drill-override.conf里的drill.exec.http.port配置是不是8047
4. 检查端口与防火墙
- 确认Windows防火墙没有拦截8047端口,可以临时关闭防火墙测试一下
- 用
netstat -ano | findstr :8047命令检查端口是否被其他进程占用,如果被占用,关闭对应进程或者修改Drill的端口配置
内容的提问来源于stack exchange,提问作者tomar
相关产品推荐
相关产品推荐

