问题展示,分析
# 启动hdfs,yarn
start-all.sh
# 多开窗口启动hive元数据管理,及hiveserver2远程连接端口
hive --service metastore
hive --service hiveserver2
# 成功启动后 查看是否增加了两个Run jar进程
jps
- hive-site.xml配置无误
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
# beeline 远程连接时 出现连接失败
beeline -u jdbc:hive2://localhost:10000
下面我们进行问题分析:
hdfs, yarn, 以及上诉hive的两个进程都已成功启动
我们直接去中hive的日志信息,从中找线索
我的机器hive的日志在/tmp/hadoop/hive.log中
发现价值信息 namenode节点处于安全模式
namenode is in safe mode
# 终端查看namenode
hdfs dfsadmin -safemode get
这里推测我上次有不规范关闭节点,其他不安全操作或者虚拟机没有正常关闭导致
- 在启动namenode时,会首先进入安全模式(safemode)。在safemode中,HDFS是不被允许进行操作的,这段时间,HDFS会检查datanode上面的块是否被损坏,若块丢失或被损坏,会修复被损坏的块,但如果损坏的太多,则namenode会一直处在安全模式,从而导致HDFS不能操作。一般遇到这种问题,等待片刻便会自动退出安全模式,但凡事总有不一般的时候,当块损坏的太多而无法修复时,namenode会始终处于安全模式,这时也可以用命令强行退出安全模式。
解决
- 手动关闭安全模式,但是下一次可能还是会处于安全模式。
hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
- 正确方式
# 查看当前的hdfs的blocks的状态
hdfs fsck -blocks
# 退出安全模式
hadoop dfsadmin -safemode leave
# hdfs web url
ip:9870
# 删除损坏块
hadoop fs -rm -r -f /user/hadoop/.sparkStaging/application_1730361158679_0002/__spark_libs__2037766523900545969.zip
# 再次查看块状态
hdfs fsck -blocks
- Status :HEALTHY 健康
- Corrupt blocks: 0
再次查看hdfs web
成功解决!!!制作不易,点个关注支持一下大学生呗!!!