HBase 搭建过程中常见问题

文章目录

进程问题

HQuorumPeer 和 QuorumPeerMain 区别

HQuorumPeer 进程是一个 ZooKeeper 实例,由 HBase 控制和启动。如果没有使用自己的 Zookeeper,而是使用 Hbase 托管的, 那么每个集群节点只能使用一个实例,并且仅适用于测试。

QuorumPeerMain 进程是 Zookeeper 独立的进程, ZooKeeperHBase 之外运行。

HRegionServer

stop-hbase.sh 可能没有关闭 HRegionServer 进程,需要自己关闭

sh 复制代码
/opt/hbase-2.4.16/bin/hbase-daemon.sh stop regionserver
# 或者 jps 查看进程号,使用 kill -9 杀死进程

HMaster 自动关闭

  1. 检查 HDFS 的端口
    • hbase-site.xml 中的 hbase.rootdir 的主机和端口号必须和 core-site.xml 中的 fs.defaultFS 的保持一致,即主机相同且端口统一使用 8020 或者 9000
  2. 检查 ZooKeeper
    • ZooKeeper 集群不稳定或者不可用:HMaster 依赖于 ZooKeeper 进行状态管理和协调,如果 ZooKeeper 出现问题,可能会影响到 HMaster 的运行。
  3. 检查网络和防火墙设置
    • 确保 HBase Master 能够通过网络与其他节点(包括 ZooKeeper)通信。检查网络连接和防火墙设置,确保必要的端口是开放的。
  4. 检查网络
    • 网络中断或不稳定:HMaster 需要与 ZooKeeper、RegionServers 和其他服务保持稳定的网络连接。网络问题可能导致 HMaster 无法正常工作并自动关闭。

启动顺序

zookeepeer➡hadoop➡hbase

sh 复制代码
./zk.sh start
./myhadoop.sh start
start-hbase.sh

停止顺序

hbase➡hadoop➡zookeepeer

sh 复制代码
stop-hbase.sh
./myhadoop.sh stop
./zk.sh stop

无法关闭一直等待

单点关闭,去日志里查找问题,日志里会提供关于问题的更多详细信息和上下文。

sh 复制代码
$HBASE_HOME/bin/hbase-daemon.sh stop master
$HBASE_HOME/bin/hbase-daemon.sh stop regionserver

运行报错

java 复制代码
ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
        at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2815)
        at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:1163)
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:387)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:132)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:369)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:349)
  1. 等待 Master 启动完成
    • HBase Master 启动可能需要一些时间。如果你刚刚启动了 Master,可能需要等待一段时间让它完全启动并注册到 ZooKeeper 中。
  2. 检查 HBase Master 状态
    • 确认 HBase Master 进程是否在运行。你可以通过查看系统进程(例如使用 jps 命令)或者检查 HBase 的日志文件来确定 Master 的状态。
  3. 检查 HBase 和 ZooKeeper 配置
    • 确保 HBaseZooKeeper 的配置文件中的地址、端口和其他设置都是正确的。任何错误的配置都可能导致 Master 无法启动或者无法与 ZooKeeper 正确通信。
  4. 检查网络和防火墙设置
    • 确保 HBase Master 能够通过网络与其他节点(包括 ZooKeeper)通信。检查网络连接和防火墙设置,确保必要的端口是开放的。
  5. 查看日志文件
    • 查看 HBaseZooKeeper 的日志文件,它们可能会提供关于问题的更多详细信息和上下文。

日志中报错问题

无法调用方法

报错信息如下:

java 复制代码
WARN  [RS-EventLoopGroup-1-1] concurrent.DefaultPromise: An exception was thrown by org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$4.operationComplete()
java.lang.IllegalArgumentException: object is not an instance of declaring class
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.hbase.io.asyncfs.ProtobufDecoder.<init>(ProtobufDecoder.java:64)
    ......

解决方案:

1)使用 Hadoopjar 包替换 hbasejar 包,并将 hbasejar 包备份

sh 复制代码
cp $HADOOP_HOME/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar $HBASE_HOME/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar
cp $HADOOP_HOME/share/hadoop/common/lib/slf4j-api-1.7.30.jar $HBASE_HOME/lib/client-facing-thirdparty/slf4j-api-1.7.30.jar

mv $HBASE_HOME/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar $HBASE_HOME/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak
mv $HBASE_HOME/lib/client-facing-thirdparty/slf4j-api-1.7.33.jar $HBASE_HOME/lib/client-facing-thirdparty/slf4j-api-1.7.33.jar.bak

2)修改 hbase-env.sh

sh 复制代码
vim $HBASE_HOME/conf/hbase-env.sh

禁用 Hadoop 的类路径查找功能,类路径的查找可能会引发问题或冲突。

sh 复制代码
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

3)重新启动 hbase 集群

sh 复制代码
stop-hbase.sh
start-hbase.sh

启动 HBase 无法找到 Hadoop 本机库

报错信息如下:

java 复制代码
WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

官方解决方案:Apache HBase ™ Reference Guide

相关推荐
2301_7930868716 分钟前
Redis 03 redis 缓存异常
数据库·redis·缓存
羊锦磊1 小时前
[ Mybatis 多表关联查询 ] resultMap
java·开发语言·数据库·mysql·mybatis
全栈工程师修炼指南6 小时前
DBA | SQL 结构化查询语言介绍与学习环境准备
数据库·sql·学习·dba
王小王-1237 小时前
基于Hadoop的全国农产品批发价格数据分析与可视化与价格预测研究
大数据·hive·hadoop·flume·hadoop农产品价格分析·农产品批发价格·农产品价格预测
RationalDysaniaer7 小时前
MySQL时间类型
数据库·mysql
代码的余温8 小时前
MySQL三大存储引擎对比:InnoDB vs MyISAM vs MEMORY
数据库·mysql
扶风呀8 小时前
MySQL宝典
数据库·mysql
请提交用户昵称8 小时前
Spark运行架构
大数据·架构·spark
fatfishccc9 小时前
循序渐进学 Spring (上):从 IoC/DI 核心原理到 XML 配置实战
xml·java·数据库·spring·intellij-idea·ioc·di
你的电影很有趣9 小时前
lesson37:MySQL核心技术详解:约束、外键、权限管理与三大范式实践指南
数据库·mysql