Error: Could not open client transport with JDBC Uri:java.net.ConnectException: Connection refused (

博主在登陆hive时遇到连接不上的问题,报错显示无法打开客户端传输。输入jps发现runjar已启动,但netstat查询发现无10000端口进程,输入hive命令也报错。最终发现原因是namenode未退出安全模式,输入“hdfs dfsadmin -safemode leave”可解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

登陆hive时发现连接不上  报出如下错误:

Error: Could not open client transport with JDBC Uri: jdbc:hive2://hdp003:10000: java.net.ConnectException: Connection refused (Connection refused) (state=08S01,code=0)

但是输入jps时发现runjar是启动的

而netstat -nltp | grep 10000   发现没有这个10000端口的进程 

之后我又再界面输入hive命令  发现报如下错误

 

原因就出在这里  namenode没有退出安全模式

在集群的主机上输入命令:hdfs dfsadmin -safemode leave 即可解决

 

这仅是我个人碰到的问题与自己找的解决方案 并不专业 有哪些地方不对希望大家指出  共同进步!

### 问题分析 在尝试通过JDBC连接HiveServer2时,出现错误信息“Could not open client transport with JDBC Uri: java.net.ConnectException: Connection refused”,表明客户端无法建立与HiveServer2的连接。此类问题通常与网络配置、HiveServer2服务状态或JDBC连接字符串配置有关。 ### 常见原因及解决方法 1. **HiveServer2服务未启动或异常** - 确保HiveServer2服务已经正确启动。可以通过执行以下命令检查服务状态: ```bash hive --service hiveserver2 ``` - 如果服务未启动,尝试启动HiveServer2服务并检查日志文件(通常位于`$HIVE_HOME/logs`目录)以排查启动失败的原因。 2. **网络连接问题** - 检查客户端与HiveServer2所在服务器之间的网络是否连通。可以使用`ping`或`telnet`命令测试: ```bash ping 192.168.1.101 telnet 192.168.1.101 10000 ``` - 如果无法通过telnet连接到10000端口,可能是防火墙阻止了连接。检查服务器防火墙设置并确保端口开放。 3. **JDBC连接字符串配置错误** - 确保JDBC连接字符串格式正确,通常为: ``` jdbc:hive2://<host>:<port>/<database> ``` - 例如: ``` jdbc:hive2://192.168.1.101:10000/default ``` - 若使用Kerberos认证,需在连接字符串中添加相应参数,例如: ``` jdbc:hive2://192.168.1.101:10000/default;principal=hive/_HOST@REALM ``` 4. **JDBC驱动版本不匹配** - 确保使用的JDBC驱动版本与HiveServer2版本兼容。如果驱动版本过旧或不匹配,可能导致连接失败。建议使用Hive发行包中自带的JDBC驱动或从官方下载对应版本的驱动。 5. **HiveServer2配置问题** - 检查HiveServer2的配置文件`hive-site.xml`,确保以下参数配置正确: - `hive.server2.thrift.bind.host`:应设置为HiveServer2监听的IP地址。 - `hive.server2.thrift.port`:默认为10000,确保该端口未被占用且与客户端连接端口一致。 - 示例配置: ```xml <property> <name>hive.server2.thrift.bind.host</name> <value>0.0.0.0</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> ``` 6. **Thrift服务监听状态** - 使用`netstat`命令检查HiveServer2是否正在监听指定端口: ```bash netstat -tuln | grep 10000 ``` - 如果未看到10000端口处于LISTEN状态,则HiveServer2未正常运行。 ### 示例代码 以下是一个使用JDBC连接HiveServer2的Java代码示例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class HiveJdbcClient { public static void main(String[] args) { String jdbcUrl = "jdbc:hive2://192.168.1.101:10000/default"; String user = "hive"; String password = ""; try { Connection connection = DriverManager.getConnection(jdbcUrl, user, password); System.out.println("Connected to HiveServer2 successfully."); connection.close(); } catch (SQLException e) { System.err.println("Failed to connect to HiveServer2: " + e.getMessage()); } } } ``` 确保项目中已添加Hive JDBC依赖,例如Maven配置: ```xml <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.2</version> </dependency> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值