按照网上的配置好后 发现缺少jar包
2020-11-23 11:47:48,744 ERROR [regionserver/linux01:16020] coprocessor.CoprocessorHost: The coprocessor org.apache.hadoop.hbase.regionserver.LocalIndexMerger threw java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger
java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.loadSystemCoprocessors(CoprocessorHost.java:154)
at org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost.<init>(RegionServerCoprocessorHost.java:70)
at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:927)
at java.lang.Thread.run(Thread.java:748)
2020-11-23 11:47:48,785 ERROR [regionserver/linux01:16020] regionserver.HRegionServer: ***** ABORTING region server linux01,16020,1606103257810: The coprocessor org.apache.hadoop.hbase.regionserver.LocalIndexMerger threw java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger *****
java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
出现这种问题 ,可以参考一下内容 :
在每一个RegionServer的hbase-site.xml中加入如下的属性
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
<name>hbase.rpc.controllerfactory.class</name>
<value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
(4.8之后版本不再需要如下配置)
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
</property>
在每一个Master的hbase-site.xml中加入如下的属性:(4.8之后版本不再需要如下配置)
<property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>
对于4.8之前的版本需要上面灰色的配置,如果4.8也添加了上面的配置,添加后在重启hbase时失败,主节点可以起来,region节点起来后就消失了,看日志如下:
2018-02-07 09:23:55,840 ERROR [regionserver/z2/192.168.110.98:60040] coprocessor.CoprocessorHost: The coprocessor org.apache.hadoop.hbase.regionserver.LocalIndexMerger threw java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger
java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.LocalIndexMerger
说找不到LocalIndexMerger这个类。
在代码中添加这个类,引入此类,发现:
<version>4.8.0-HBase-1.0</version>
中根本没有此类,
<version>4.6.0-HBase-0.98</version>
中才有。
因此把phoenix-core-4.6.0-HBase-0.98.jar拷贝到各region节点的lib下,再次启动hbase才能成功。