hive连不上,报错9000拒绝连接

参考:豆包、百度

一、排查错误

客户端(你执行 hdfs dfsadmin -safemode ...)去连接 NameNode 的 9000 端口,但连接被拒绝。

这说明 NameNode 根本没在监听 9000 端口(或者进程没启动,或者启动失败)。

jps查看进程,发现没有namenode

查看日志:

复制代码
tail -n 100 hadoop-$(whoami)-namenode-$(hostname).log

发现

复制代码
Storage directory /tmp/hadoop-root/dfs/name does not exist
...
InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state

这说明 NameNode 的元数据目录不存在,所以 NameNode 启动失败,也就导致 9000 端口没有监听,出现 "拒绝连接" 错误。

二、解决方法

修改配置,将数据目录放到非 /tmp 位置(推荐)

复制代码
mkdir -p /hadoop_data/hadoop/data/namenode
mkdir -p /hadoop_data/hadoop/data/datanode
chown -R hadoop:hadoop /hadoop_data/hadoop

编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

复制代码
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/hadoop_data/hadoop/data/namenode</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/hadoop_data/hadoop/data/datanode</value>
</property>

格式化并启动

复制代码
stop-all.sh
hdfs namenode -format
start-all.sh
jps

这样即使重启机器,数据也不会丢失。

9000 端口也有数据了。

复制代码
[root@localhost ~]# jps
1107 Elasticsearch
28483 NameNode
29236 NodeManager
29111 ResourceManager
28618 DataNode
30108 RunJar
31468 Jps
28830 SecondaryNameNode
29950 RunJar

[root@localhost ~]# netstat -nlpt|grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      28483/java  

三、HiveServer2/Beeline方式连接hive(推荐)

启动HiveServer2服务 在服务器上运行以下命令:

复制代码
nohup hiveserver2 > /dev/null 2>&1 &

使用Beeline客户端连接 在客户端运行以下命令:

复制代码
beeline -u jdbc:hive2://<hostname>:10000 -n <username>

成功连接后,可以执行Hive查询操作,例如:

复制代码
show databases;
相关推荐
野老杂谈2 小时前
Hive SQL 中的时间戳转换详解
hive·hadoop·sql
大数据CLUB2 小时前
基于hive和mapreduce的地铁数据分析及可视化_hive作为数据库
大数据·hive·hadoop·分布式·数据分析·mapreduce
嘉禾望岗5032 小时前
hive SQL查询与函数
hive·hadoop·sql
不吃饭的猪5 小时前
hive表元数据修复脚本
数据仓库·hive·hadoop
白日与明月6 小时前
对Hive表进行归档,减少小文件的影响
数据仓库·hive·hadoop
嘉禾望岗5036 小时前
hive窗口函数与自定义函数
数据仓库·hive·hadoop
67X7 小时前
数据仓库与数据挖掘课程设计
数据仓库·数据挖掘
风跟我说过她7 小时前
Hadoop HA (高可用) 配置与操作指南
大数据·hadoop·分布式·zookeeper·centos
沧澜sincerely7 小时前
WSL2搭建Hadoop伪分布式环境
大数据·hadoop·搜索引擎