-准备工作
start-all.sh启动hadoop两个服务
hive --service metastore & hive --service hiveserver2 & 启动hive两个服务
hiveserver2服务启动时一直输出"... Session ID ..."

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

Safe mode is ON:namenode处于安全状态 Blocks with corrupt replicas: 3 :存在 3 个损坏的数据块副本,这是安全模式无法自动退出的根源
#问题+解决方案
1:namenode处于安全模式
csharp
# 检查是否处于安全模式
hdfs dfsadmin -safemode get
bash
# 手动强制退出安全模式
hdfs dfsadmin -safemode leave
2:处理损坏块
- 方案 A:删除损坏块(适合测试环境)
arduino
hdfs fsck / -delete
这个命令会检查并删除所有损坏的块。
- 方案 2:重新设置副本数(避免后续报警)
bash
# 单节点集群可以把副本数设为 1,减少副本相关报警:
hdfs dfs -setrep -R 1 /
3: notification.api.auth的验证问题
3.1 看不出来问题,查看日志
bash
# 先创建你自己的日志目录
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
这说明 HiveServer2 在尝试初始化元数据事件通知功能时,因为权限校验 / 配置问题抛出了异常,导致服务无法正常启动。 ------------------------应该是notification.api.auth的验证问题!
3.2 解决notification.api.auth的验证问题
bash
# 备份配置文件
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
xml
# 添加以下配置(放在 <configuration> 标签内)
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
3.3 🧪 验证修复
bash
# 重启后再次查看日志:
tail -f tail -f $HIVE_HOME/logs/*.log
如果日志里不再出现 getCurrentNotificationEventId 相关的报错,并且能看到 HiveServer2: Started 之类的启动成功日志,就说明修复完成了✅。
【日志正常,且10000端口被hiveserver2服务监听】
