从Denodo平台连接Hive报错Connection refused问题求助
这种连接突然失效的问题我碰到过好几次,结合你给出的报错和日志片段,咱们一步步来排查定位:
1. 优先确认HiveServer2服务状态
之前能正常连接现在突然挂了,最常见的原因就是HiveServer2进程崩了或者被停了:
- 在Hive服务器上执行命令检查服务状态:
sudo systemctl status hive-server2
如果显示inactive (dead),直接重启服务:sudo systemctl restart hive-server2 - 要是你的环境不用systemd管理,就用
jps命令查看进程,找有没有RunJar(HiveServer2对应的进程名);如果没找到,手动启动:hive --service hiveserver2 &
2. 排查网络与端口问题
连接拒绝大概率和网络不通或者端口没开放有关:
- 从Denodo所在机器ping Hive服务器的
hostname,确认网络可达:ping hostname,如果ping不通,找运维排查防火墙规则、路由或者服务器是否在线 - 用telnet测试端口是否开放:
telnet hostname portnumber,如果提示“Connection refused”,要么Hive服务没监听这个端口,要么防火墙拦截了:- 检查Hive配置文件
hive-site.xml里的hive.server2.thrift.port参数,确认和你Denodo里用的端口号一致 - 检查Hive服务器的防火墙,确保目标端口是开放的(比如用
ufw allow portnumber或者firewall-cmd --add-port=portnumber/tcp --permanent)
- 检查Hive配置文件
3. 查看完整的Hive日志定位Thrift错误
你给出的日志只截了开头,Thrift错误后面的完整栈信息才是关键:
ERROR [pool-3-thread-5]: server.TThreadPoolServer (TThreadPoolServer.java:run(294)) - Thrift erro...
- 找到完整的错误信息,常见的情况有:
- 端口被占用:用
netstat -tulpn | grep portnumber查看哪个进程占用了端口,杀掉冲突进程或者修改Hive的监听端口 - 内存不足:HiveServer2因为内存溢出崩溃,需要调整
hive-env.sh里的JVM参数,比如export HADOOP_HEAPSIZE=2048(根据实际情况调整) - 认证配置变更:如果Hive突然开启了Kerberos认证(
hive-site.xml里hive.server2.authentication设为KERBEROS),Denodo端也要同步配置Kerberos凭证
- 端口被占用:用
4. 验证Denodo端配置(虽然之前没问题,但也别漏了)
- 核对Denodo里的JDBC URL:
jdbc:hive2://hostname:portnumber,确保hostname、端口号没有拼写错误 - 确认Denodo使用的Hive JDBC驱动版本和Hive服务器版本匹配,比如Hive 3.x需要用对应的3.x版本驱动,旧驱动可能出现兼容性问题
内容的提问来源于stack exchange,提问作者Ranjan Mb
相关产品推荐
相关产品推荐

