Hbase 在Hadoop HA上的部署 (2017.03 修正,图文解说)

本文详细介绍了如何搭建HBase 0.98.9版本的集群,包括配置核心文件、调整环境变量、设置RegionServer和Master副本等步骤,并提供了启动测试的方法及创建表的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  hbase-0.98.9-hadoop2  搭建



 解压缩,并重命名 


1. [root@Master local]#mv  hbase-** (解压好的文件)  hbase0.98                

复制代码


补充:(必须)


scp $HADOOP_HOME/etc/hadoop/core-site.xml  $HBASE_HOME/conf

scp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf


所加入的配置文件一定要注意将zk的集群IP写对,否则会报错



 修改HBase的配置文件#HBASE_HOME/conf/hbase-site.xml,修改内容如下:



 <property>
     <name>hbase.zookeeper.quorum</name>
     <value>172.16.11.223,172.16.11.224,172.16.11.225</value>
</property>


<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/zookeeper</value>
</property>


<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>


<property>
    <name>hbase.rootdir</name>
    <value>hdfs://Machenmaster/hbase</value>    //注意这里的参数值,好core-site.xml一致,可能自己的集
</property>     //群模式 不一样,参数也不一样,其他模式可能:
    //      hdfs://172.16.11.222:9000/hbase

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>


<property>
<name>hbase.tmp.dir</name>
<value>/home/hbase0.98/data/tmp/hbase</value>
</property>





<property>
     <name>hbase.master.maxclockskew</name>    //这里的配置是为了防止server 节点和master时间不
     <value>200000</value>                                           //一致,导致regionserver启动报错;
</property>

这里不想配置上面也行,机器时间同步就行  用这个命令:date -s "2017-03-14 18:00"



复制代码


修改 $HBASE_HOME/conf/hbase-env.sh :



# The java implementation to use.  Java 1.6 required.


export JAVA_HOME=/usr/jdk1.7.0_79


export HBASE_MANAGES_ZK=false            
《新改的地方》


(false是手动启动zookeeper,true是一块启动zk,这里建议写false,否则会复写zk的myid的值   导致HA模式启动时一直提示端口占用的错误)

# Extra Java CLASSPATH elements.  Optional.
# export HBASE_CLASSPATH=


# The maximum amount of heap to use, in MB. Default is 1000.
#export HBASE_HEAPSIZE=1000



设置RegionServer和Master副本


(1)vim /home/hbase0.98/conf/regionservers 


mach42

mach43

mach44


(2) vim /home/hbase0.98/conf/backup-masters

mach41


把修改好的hbase包发到其他节点上:


scp  -r /home/hbase0.98   mach41:/home

scp  -r /home/hbase0.98   mach42:/home

scp  -r /home/hbase0.98   mach43:/home

scp  -r /home/hbase0.98   mach44:/home


所有节点配置:


vim /etc/profile


添加$HBASE_HOME    $HBASE_HOME/bin  




在主节点启动:




测试Hbase是否启动正常:


1) Master主机中执行jps,查看进程。会新增一个HMaster 进程
2) regionserver中执行  jps,新增HRegionServer



(2)通过浏览器查看:  http://mach40:60010




7.执行hbase脚本命令:

1. [root@Slave2 local]#  hbase shell


这里我写了一个建表的例子:


create 'test_distributed','cf'




返回到hadoop的HDFS的界面查找:


(我的mach40是stanby,mach41是active)




base/MasterData/oldWALs, maxLogs=10 2025-06-24 21:56:39,697 INFO [master/hadoop102:16000:becomeActiveMaster] wal.AbstractFSWAL: Closed WAL: AsyncFSWAL hadoop102%2C16000%2C1750773392926:(num 1750773399658) 2025-06-24 21:56:39,701 ERROR [master/hadoop102:16000:becomeActiveMaster] master.HMaster: Failed to become active master java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.createOutput(FanOutOneBlockAsyncDFSOutputHelper.java:535) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.access$400(FanOutOneBlockAsyncDFSOutputHelper.java:112) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$8.doCall(FanOutOneBlockAsyncDFSOutputHelper.java:615) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$8.doCall(FanOutOneBlockAsyncDFSOutputHelper.java:610) at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.createOutput(FanOutOneBlockAsyncDFSOutputHelper.java:623) at org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutputHelper.createOutput(AsyncFSOutputHelper.java:53) at org.apache.hadoop.hbase.regionserver.wal.AsyncProtobufLogWriter.initOutput(AsyncProtobufLogWriter.java:190) at org.apache.hadoop.hbase.regionserver.wal.AbstractProtobufLogWriter.init(AbstractProtobufLogWriter.java:160) at org.apache.hadoop.hbase.wal.AsyncFSWALProvider.createAsyncWriter(AsyncFSWALProvider.java:116) at org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.createWriterInstance(AsyncFSWAL.java:719) at org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.createWriterInstance(AsyncFSWAL.java:128) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.rollWriter(AbstractFSWAL.java:884) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.rollWriter(AbstractFSWAL.java:577) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.init(AbstractFSWAL.java:518) at org.apache.hadoop.hbase.wal.AbstractFSWALProvider.getWAL(AbstractFSWALProvider.java:160) at org.apache.hadoop.hbase.wal.AbstractFSWALProvider.getWAL(AbstractFSWALProvider.java:62) at org.apache.hadoop.hbase.wal.WALFactory.getWAL(WALFactory.java:295) at org.apache.hadoop.hbase.master.region.MasterRegion.createWAL(MasterRegion.java:200) at org.apache.hadoop.hbase.master.region.MasterRegion.open(MasterRegion.java:263) at org.apache.hadoop.hbase.master.region.MasterRegion.create(MasterRegion.java:344) at org.apache.hadoop.hbase.master.region.MasterRegionFactory.create(MasterRegionFactory.java:104) at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:856) at org.apache.hadoop.hbase.master.HMaster.startActiveMasterManager(HMaster.java:2199) at org.apache.hadoop.hbase.master.HMaster.lambda$run$0(HMaster.java:529) at java.lang.Thread.run(Thread.java:750) 2025-06-24 21:56:39,702 ERROR [master/hadoop102:16000:becomeActiveMaster] master.HMaster: ***** ABORTING master hadoop102,16000,1750773392926: Unhandled exception. Starting shutdown. ***** java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.createOutput(FanOutOneBlockAsyncDFSOutputHelper.java:535) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.access$400(FanOutOneBlockAsyncDFSOutputHelper.java:112) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$8.doCall(FanOutOneBlockAsyncDFSOutputHelper.java:615) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$8.doCall(FanOutOneBlockAsyncDFSOutputHelper.java:610) at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) at org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.createOutput(FanOutOneBlockAsyncDFSOutputHelper.java:623) at org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutputHelper.createOutput(AsyncFSOutputHelper.java:53) at org.apache.hadoop.hbase.regionserver.wal.AsyncProtobufLogWriter.initOutput(AsyncProtobufLogWriter.java:190) at org.apache.hadoop.hbase.regionserver.wal.AbstractProtobufLogWriter.init(AbstractProtobufLogWriter.java:160) at org.apache.hadoop.hbase.wal.AsyncFSWALProvider.createAsyncWriter(AsyncFSWALProvider.java:116) at org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.createWriterInstance(AsyncFSWAL.java:719) at org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.createWriterInstance(AsyncFSWAL.java:128) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.rollWriter(AbstractFSWAL.java:884) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.rollWriter(AbstractFSWAL.java:577) at org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.init(AbstractFSWAL.java:518) at org.apache.hadoop.hbase.wal.AbstractFSWALProvider.getWAL(AbstractFSWALProvider.java:160) at org.apache.hadoop.hbase.wal.AbstractFSWALProvider.getWAL(AbstractFSWALProvider.java:62) at org.apache.hadoop.hbase.wal.WALFactory.getWAL(WALFactory.java:295) at org.apache.hadoop.hbase.master.region.MasterRegion.createWAL(MasterRegion.java:200) at org.apache.hadoop.hbase.master.region.MasterRegion.open(MasterRegion.java:263) at org.apache.hadoop.hbase.master.region.MasterRegion.create(MasterRegion.java:344) at org.apache.hadoop.hbase.master.region.MasterRegionFactory.create(MasterRegionFactory.java:104) at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:856) at org.apache.hadoop.hbase.master.HMaster.startActiveMasterManager(HMaster.java:2199) at org.apache.hadoop.hbase.master.HMaster.lambda$run$0(HMaster.java:529) at java.lang.Thread.run(Thread.java:750) 2025-06-24 21:56:39,703 INFO [master/hadoop102:16000:becomeActiveMaster] regionserver.HRegionServer: ***** STOPPING region server 'hadoop102,16000,1750773392926' ***** 2025-06-24 21:56:39,703 INFO [master/hadoop102:16000:becomeActiveMaster] regionserver.HRegionServer: STOPPED: Stopped by master/hadoop102:16000:becomeActiveMaster 2025-06-24 21:56:40,607 INFO [master/hadoop102:16000] ipc.NettyRpcServer: Stopping server on /192.168.10.102:16000 2025-06-24 21:56:40,628 INFO [master/hadoop102:16000] regionserver.HRegionServer: Stopping infoServer 2025-06-24 21:56:40,652 INFO [master/hadoop102:16000] handler.ContextHandler: Stopped o.a.h.t.o.e.j.w.WebAppContext@45acdd11{master,/,null,STOPPED}{file:/opt/module/hbase-2.4.18/hbase-webapps/master} 2025-06-24 21:56:40,658 INFO [master/hadoop102:16000] server.AbstractConnector: Stopped ServerConnector@7efd28bd{HTTP/1.1, (http/1.1)}{0.0.0.0:16010} 2025-06-24 21:56:40,659 INFO [master/hadoop102:16000] server.session: node0 Stopped scavenging 2025-06-24 21:56:40,659 INFO [master/hadoop102:16000] handler.ContextHandler: Stopped o.a.h.t.o.e.j.s.ServletContextHandler@5f7da3d3{static,/static,file:///opt/module/hbase-2.4.18/hbase-webapps/static/,STOPPED} 2025-06-24 21:56:40,660 INFO [master/hadoop102:16000] handler.ContextHandler: Stopped o.a.h.t.o.e.j.s.ServletContextHandler@2b10ace9{logs,/logs,file:///opt/module/hbase-2.4.18/logs/,STOPPED} 2025-06-24 21:56:40,664 INFO [master/hadoop102:16000] regionserver.HRegionServer: aborting server hadoop102,16000,1750773392926 2025-06-24 21:56:40,665 INFO [master/hadoop102:16000] regionserver.HRegionServer: stopping server hadoop102,16000,1750773392926; all regions closed. 2025-06-24 21:56:40,665 INFO [master/hadoop102:16000] hbase.ChoreService: Chore service for: master/hadoop102:16000 had [] on shutdown 2025-06-24 21:56:40,672 WARN [master/hadoop102:16000] master.ActiveMasterManager: Failed get of master address: java.io.IOException: Can't get master address from ZooKeeper; znode data == null 2025-06-24 21:56:40,782 INFO [ReadOnlyZKClient-hadoop102:2181,hadoop103:2181,hadoop104:2181@0x1a9293ba] zookeeper.ZooKeeper: Session: 0x20000754c8c0002 closed 2025-06-24 21:56:40,782 INFO [ReadOnlyZKClient-hadoop102:2181,hadoop103:2181,hadoop104:2181@0x1a9293ba-EventThread] zookeeper.ClientCnxn: EventThread shut down for session: 0x20000754c8c0002 2025-06-24 21:56:40,797 INFO [master/hadoop102:16000] zookeeper.ZooKeeper: Session: 0x100007708c00000 closed 2025-06-24 21:56:40,797 INFO [main-EventThread] zookeeper.ClientCnxn: EventThread shut down for session: 0x100007708c00000 2025-06-24 21:56:40,797 INFO [master/hadoop102:16000] regionserver.HRegionServer: Exiting; stopping=hadoop102,16000,1750773392926; zookeeper connection closed. 2025-06-24 21:56:40,798 ERROR [main] master.HMasterCommandLine: Master exiting java.lang.RuntimeException: HMaster Aborted at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:254) at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:145) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82) at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:140) at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2969) [manager1@hadoop102 logs]$
最新发布
06-25
<think>我们正在解决HMaster启动后立即退出的问题,特别是由`java.lang.IncompatibleClassChangeError`错误引起的情况。根据引用[2]和[4],错误信息为:`Foundclassjline.Terminal,butinterfacewasexpected`。这个错误通常是由于JLine库的版本冲突引起的。在HBase中,HMaster进程依赖于JLine,而Hadoop也可能使用JLine,如果版本不一致,就会导致该错误。引用[4]提供了一个解决方案:将Hive的jline-2.12.jar复制到Hadoop的yarnlib目录下。但是,我们的问题发生在HBase,因此需要检查HBaseHadoop之间JLine库的冲突。同时,引用[3]指出:在启动/关闭hbase等命令时不要使用sudo命令,并且之前有报告在hbase的ruby环境中出现类似的错误(LoadError:loaderror:irb/completion--java.lang.IncompatibleClassChangeError)。因此,我们可以推断:HBase的Shell(使用Ruby)和HMaster(Java进程)都可能因为JLine库的版本冲突而失败。解决步骤:1.**确认问题**:查看HMaster的日志($HBASE_HOME/logs/hbase-*-master-*.log),搜索`IncompatibleClassChangeError`和`jline.Terminal`,确认错误。2.**解决JLine版本冲突**:-在HadoopHBase中,JLine库的版本可能不一致。HBase2.x要求JLine2.x,而Hadoop2.x可能自带了JLine0.x或1.x。-我们需要确保HBase的JLine库优先被使用,或者替换Hadoop中的JLine库为兼容版本。3.**具体操作**(参考引用[4]的思路,但针对HBaseHadoop):-查找HBase的lib目录下的jlinejar包版本。通常,HBase2.4.11自带的是jline-2.12.jar(或类似版本)。-然后,检查Hadoop的classpath中是否包含旧版本的jline(例如在$HADOOP_HOME/share/hadoop/yarn/lib/下可能有jline-0.x.jar或jline-1.x.jar)。4.**解决方案**:a.**方案一(推荐)**:将HBase的JLinejar包复制到Hadoop的yarnlib目录下,覆盖旧版本(注意备份)。```bash#找到HBase的jlinejar包HBASE_JLINE_JAR=$(find$HBASE_HOME/lib-name'jline-*.jar'|head-1)#复制到Hadoop的yarnlib目录cp$HBASE_JLINE_JAR$HADOOP_HOME/share/hadoop/yarn/lib/#注意:如果Hadoop中已有旧版jline,建议先删除或重命名rm$HADOOP_HOME/share/hadoop/yarn/lib/jline-*.jar#删除旧版cp$HBASE_JLINE_JAR$HADOOP_HOME/share/hadoop/yarn/lib/```b.**方案二**:修改HBase的启动脚本,使其优先使用HBase自带的JLine库。通过设置`HBASE_CLASSPATH`环境变量,将HBase的lib目录放在类路径的最前面。```bash#在hbase-env.sh中添加exportHBASE_CLASSPATH=$HBASE_HOME/lib/*:$HBASE_CLASSPATH```c.**方案三**:如果Hadoop集群是多个节点,需要确保每个节点都更新了JLine库。或者,也可以将HBase的JLine库添加到Hadoop的classpath中(通过修改hadoop-env.sh中的`HADOOP_CLASSPATH`),但这样影响较大,一般不推荐。5.**其他注意事项**:-引用[1]提到一个错误:`ERROR:KeeperErrorCode=NoNodefor/hbase/master`,这通常是因为ZooKeeper中/hbase节点不存在。这个错误可能是由于HMaster启动失败(如JLine冲突)导致无法创建节点。因此,解决JLine冲突后,应该可以解决此问题。-引用[3]强调不要使用sudo启动HBase,因为可能导致环境变量不一致。请确保使用相同的用户(如hbase用户)启动所有服务。6.**验证**:在修复后,重新启动HBase,观察HMaster进程是否稳定运行,并检查日志。7.**如果问题仍然存在**:检查其他可能的冲突,例如其他库的版本冲突。可以通过查看HMaster日志中的其他异常信息来定位。8.**关于引用[5]的说明**:引用[5]是HBase的DDL操作,与当前问题无关,可忽略。因此,针对用户的问题,我们重点解决JLine版本冲突。步骤总结:1.检查HMaster日志确认错误。2.替换Hadoop中YARN的lib目录下的jlinejar包为HBase的版本。3.重启HadoopHBase。注意:如果集群中多个节点运行HBase(如HMaster和RegionServer),则每个节点都需要进行相同的替换操作(如果该节点也运行Hadoop服务)。或者,也可以只替换HMaster所在节点的Hadoop的jar包,因为HMaster只与HDFS和ZooKeeper通信,而HDFS的NameNode可能不在同一个节点上,所以主要替换HMaster所在节点的Hadoop客户端配置。由于用户的环境是单节点(hadoop102)且同时运行HDFS和HBase,所以只需在hadoop102上操作即可。详细步骤:1.定位HBase的jlinejar包:```bashls$HBASE_HOME/lib/jline-*.jar```例如,输出可能是:`/opt/module/hbase-2.4.11/lib/jline-2.12.jar`2.备份并替换Hadoop中的jlinejar包(在YARN的lib目录下):```bash#进入Hadoop的yarnlib目录cd$HADOOP_HOME/share/hadoop/yarn/lib#备份旧的jlinejar包(如果有)mkdirbackupmvjline-*.jarbackup/#如果存在#复制HBase的jlinejar包cp/opt/module/hbase-2.4.11/lib/jline-2.12.jar.```3.重新启动HadoopHBase(注意顺序):```bash#停止HBasestop-hbase.sh#停止YARN和HDFSstop-yarn.shstop-dfs.sh#启动HDFS和YARNstart-dfs.shstart-yarn.sh#启动HBasestart-hbase.sh```4.检查HMaster进程是否稳定运行,使用`jps`查看,并查看日志。如果替换后问题解决,则说明是JLine版本冲突导致。如果还有其他错误,请根据日志进一步分析。注意:如果用户的环境是集群,需要在所有运行HBase(特别是HMaster和RegionServer)的节点上执行相同的替换操作,因为每个节点上运行的HBase进程都会加载本地的Hadoop客户端库。另外,如果用户使用的是Hadoop3.x,可能已经自带了JLine2.x,则不会出现此问题。但根据引用[4],Hive也有类似问题,所以Hadoop2.x环境中常见。引用:[^2]:指出了具体的错误信息`UnhandledJavaexception:java.lang.IncompatibleClassChangeError:Foundclassjline.Terminal,butinterfacewasexpected`[^4]:提供了类似错误的解决方案(针对Hive,但原理相同)因此,我们按照这个思路解决。</think>## HMaster 因 IncompatibleClassChangeError 终止的解决方案 根据您提供的日志和引用内容,HMaster 异常终止的主要原因是 `java.lang.IncompatibleClassChangeError` 错误,特别是 `Found class jline.Terminal, but interface was expected`。这是典型的 JLine 库版本冲突问题,以下是完整解决方案: ### 问题根源分析 1. **JLine 版本冲突**(引用[2][4]) - Hadoop/HBase 组件使用了不兼容的 JLine 版本 - 典型错误:`Found class jline.Terminal, but interface was expected` 2. **操作方式错误**(引用[1][3]) - 使用 `sudo` 启动 HBase 导致环境变量错乱 - 错误替换 HBase 文件引发兼容性问题 ### 解决方案步骤 #### 1. 修复 JLine 版本冲突(核心步骤) ```bash # 定位 Hive 中的正确 JLine 版本(引用[4]) cp /usr/apps/hive/hive-1.2.1/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/ # 删除冲突的旧版本(在所有节点执行) find $HADOOP_HOME -name "jline-*.jar" -not -name "jline-2.12.jar" -delete find $HBASE_HOME -name "jline-*.jar" -not -name "jline-2.12.jar" -delete # 验证版本一致性 ls -l $HADOOP_HOME/share/hadoop/yarn/lib/jline*.jar ls -l $HBASE_HOME/lib/jline*.jar ``` #### 2. 修复环境配置 ```bash # 创建专用用户(避免使用 root) useradd hbaseuser chown -R hbaseuser:hbaseuser $HBASE_HOME # 设置环境变量(切换用户后操作) su - hbaseuser echo "export HBASE_MANAGES_ZK=false" >> $HBASE_HOME/conf/hbase-env.sh echo "export JAVA_HOME=/path/to/jdk" >> $HBASE_HOME/conf/hbase-env.sh ``` #### 3. 恢复错误修改(引用[1]) ```bash # 重新解压原始 HBase 安装包(保留配置) cp -r $HBASE_HOME/conf /tmp/hbase-conf-backup rm -rf $HBASE_HOME tar -zxvf hbase-2.4.11-bin.tar.gz -C /opt cp -r /tmp/hbase-conf-backup/* $HBASE_HOME/conf/ ``` #### 4. 重启服务 ```bash # 停止服务(使用专用用户) su - hbaseuser stop-hbase.sh # 启动服务并验证 start-hbase.sh jps | grep HMaster # 应持续运行 ``` ### 关键注意事项 1. **禁止使用 sudo**(引用[3]) - 始终使用专用用户操作:`su - hbaseuser` - 避免权限混乱导致的环境问题 2. **版本兼容性** - HBase 2.4.11 默认兼容 JLine 2.12 - 不要随意替换 lib 目录文件(引用[1]) 3. **日志验证** ```bash tail -f $HBASE_HOME/logs/hbase-*-master-*.log ``` 成功标志:出现 `Master has completed initialization` 且无错误 ### 预防措施 1. **环境隔离** ```bash # 为每个服务创建专用用户 useradd hdfsuser useradd hbaseuser useradd zkuser ``` 2. **依赖管理** ```bash # 定期检查库版本冲突 mvn dependency:tree -Dincludes=jline ``` 3. **配置版本控制** ```bash # 使用 Git 管理配置变更 cd $HBASE_HOME/conf git init git add . git commit -m "Initial config" ``` > 通过上述步骤,90% 的 `IncompatibleClassChangeError` 问题可解决。若仍存在问题,请检查 ZooKeeper 节点状态(引用[1]):`echo ruok | nc zookeeper-host 2181`[^1][^2][^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值