Hive hiveserver2 监听端口10000异常 启动失败

0 阅读2分钟

-准备工作

start-all.sh启动hadoop两个服务

hive --service metastore & hive --service hiveserver2 & 启动hive两个服务

hiveserver2服务启动时一直输出“... Session ID ...”

image.png

-查看siveserveer2 是否监听10000

# 用jps和ps -ef查看进程
# 查看10000端口((都启动着,但发现10000端口没有被监听,就还是不行)
jps
ps -ef
ss -ntlp | grep 10000
# 检查集群状态【重点看:安全模式(Safe mode);损坏副本块(Blocks with corrupt replicas:)】
hdfs dfsadmin -report

image.png

Safe mode is ON:namenode处于安全状态 Blocks with corrupt replicas: 3 :存在 3 个损坏的数据块副本,这是安全模式无法自动退出的根源

#问题+解决方案

1:namenode处于安全模式

# 检查是否处于安全模式
hdfs dfsadmin -safemode get
# 手动强制退出安全模式
hdfs dfsadmin -safemode leave

2:处理损坏块

  • 方案 A:删除损坏块(适合测试环境)
hdfs fsck / -delete

这个命令会检查并删除所有损坏的块。

  • 方案 2:重新设置副本数(避免后续报警)
# 单节点集群可以把副本数设为 1,减少副本相关报警:
hdfs dfs -setrep -R 1 /

3: notification.api.auth的验证问题

3.1 看不出来问题,查看日志

# 先创建你自己的日志目录
mkdir -p $HIVE_HOME/logs
cd $HIVE_HOME/conf
cp hive-log4j2.properties.template hive-log4j2.properties
 
nano hive-log4j2.properties
# 修改 property.hive.log.dir的值为 $HIVE_HOME/logs

# 实时看日志
tail -f $HIVE_HOME/logs/*.log

image.png 这说明 HiveServer2 在尝试初始化元数据事件通知功能时,因为权限校验 / 配置问题抛出了异常,导致服务无法正常启动。 ————————应该是notification.api.auth的验证问题!

3.2 解决notification.api.auth的验证问题

# 备份配置文件
cp $HIVE_HOME/conf/hive-site.xml $HIVE_HOME/conf/hive-site_1.xml.bak
# 编辑 hive-site.xml
nano $HIVE_HOME/conf/hive-site.xml
# 添加以下配置(放在 <configuration> 标签内)
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property> 

3.3 🧪 验证修复

# 重启后再次查看日志:
tail -f tail -f $HIVE_HOME/logs/*.log

如果日志里不再出现 getCurrentNotificationEventId 相关的报错,并且能看到 HiveServer2: Started 之类的启动成功日志,就说明修复完成了✅。

【日志正常,且10000端口被hiveserver2服务监听】

image.png