问题描述:

使用hive连接三方工具datagrip的时候出现错误:
Could not open client transport with JDBC Uri: jdbc:hive2://hadoop:10000: java.net.ConnectException: Connection refused: connect

解决过程:

首先通过查阅网上资料,排除了以下原因:
1、防火墙
2、Hadoop中hdfs、yarn的启动
3、开启metastore和hiveServer2服务

然后去看了hive的日志:
Caused by: org.apache.hadoop.ipc.RemoteException: Cannot create directory /tmp/hive/root/239df2e3-f39e-46b7-8f17-38dc7da2d793. Name node is in safe mode.
The reported blocks 501 needs additional 8 blocks to reach the threshold 0.9990 of total blocks 510.
The minimum number of live datanodes is not required. Safe mode will be turned off automatically once the thresholds have been reached. NamenodeHostName:hadoop102
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.newSafemodeException(FSNamesystem.java:1468)

根据错误信息,可以看出是因为 HDFS 的 NameNode 处于安全模式,无法创建目录 /tmp/hive/root/239df2e3-f39e-46b7-8f17-38dc7da2d793,导致任务失败。

解决方法是等待 NameNode 自动退出安全模式,或者手动将其退出安全模式。可以使用以下命令将 NameNode 退出安全模式:

hdfs dfsadmin -safemode leave

至此问题解决!