1 加载协处理器
1.1 将协处理器上传到hdfs:
hadoop fs -mkdir /hbasenew/usercoprocesser
hadoop fs -ls /hbasenew/usercoprocesser
hadoop fs -rm /hbasenew/usercoprocesser/coprocessor.jar
hadoop fs -copyFromLocal /home/hbase/coprocessor.jar /hbasenew/usercoprocessor
1.2 将协处理器加载到表中:
1)先卸载协处理器:
disable 'ns_bigdata:tb_test_coprocesser'
alter 'ns_bigdata:tb_test_coprocesser',METHOD => 'table_att_unset',NAME =>'coprocessor$1'
enable 'ns_bigdata:tb_test_coprocesser'
2)再加载协处理器:
disable 'ns_bigdata:tb_test_coprocesser'
alter 'ns_bigdata:tb_test_coprocesser',METHOD => 'table_att','coprocessor' => '/hbasenew/usercoprocesser/coprocessor.jar|com.suning.hbase.coprocessor.service.HelloWorldEndPoin|1001|'
enable 'ns_bigdata:tb_test_coprocesser'
注意:在加载协处理器是我特意将协处理器中的类名少写一个字母t,以重现将集群regionserver搞挂的现象以及表的状态不一致的现象。
2 出现的问题
以上操作会导致如下两个问题:
2.1 将集群的region server搞挂掉
2.2 将加载协处理器的表的状态搞的不一致,一直处于enabling状态
对表做disable和enable操作均不可操作:
同时此表对应的regionserver上出现如下错误:
3 原因分析
3.1 关于协处理加载错误导致regionserver挂掉的原因分析
在hbase的源码中,参数:hbase.coprocessor.abortonerror的默认值是true:
public static final String ABORT_ON_ERROR_KEY = "hbase.coprocessor.abortonerror";
public static final boolean DEFAULT_ABORT_ON_ERROR = true;
下面查看此参数的含义:
<property>
<name>hbase.coprocessor.abortonerror</name>
<va

本文详细探讨了HBase协处理器加载过程中引发的region server故障及表状态不一致问题。通过分析源码和错误日志,揭示了问题的根本原因,并提出了设置'hbase.coprocessor.abortonerror'为false以避免region server挂掉,以及通过切换Master节点恢复表状态的解决策略。实验表明,即使所有master节点宕机,集群仍能保持读写正常。
最低0.47元/天 解锁文章
1276

被折叠的 条评论
为什么被折叠?



