HBase Coprocessor实现HBase二级索引

用Coprocessor实现HBase的二级索引,遇到了很多问题,记录一下

首先本次的感想是:

官方文档很重要!

日志非常重要!!!

用的数据是POES粒子通量数据,选取其中的位置信息,mag_lat_sat, mag_lon_sat,时间信息time,L值IGRF_L和B值Btot,以及各能段0度和90度方向质子和电子的粒子通量数据存储,row key是通过L、lat、lon计算出来的索引值,用B值作一个二级索引,方便在LB坐标系下的索引。

首先,按照http://www.cnblogs.com/ventlam/archive/2012/10/30/2747024.html,数数据行数测试一下

表POESDataTest加载了自带的数行数的coprocessor

然后测试二级索引,按照https://www.jianshu.com/p/d56584c45401,稍作修改,写一个用Btot作二级索引的project,并且打包成jar包

  • 创建Index表

create 'IndexTableTest','B'

  • 将表disable,

disable 'POESDataTest2'

  • 加载coprocessor,

alter 'POESDataTest2', METHOD=>'table_att', 'coprocessor'=>'hdfs://had_user@mater:9000/user/had_user/tests/TestCoprocessor.jar|coprocessor.TestCoprocessorIndex|'

  • 再enable表

enable 'POESDataTest2'

为了防止加载coprocessor的时候错误导致集群挂掉,修改hbase-site.xml文件,加入一个property,hbase.coprocessor.abortonerror,设置成false

注意!这个参数在加载好了没问题之后需要重新设置回true,并且要把修改的hbase-site.xml重新放到project,重新生成和上传jar包。

一开始遇到了问题,加载coprocessor的时候,告诉我File dose not exist,jar包不存在,hbase shell告诉我把hbase-site.xml的hbase.table.sanity.checks这个property设置成false。这次没报错了,成功加载,成功enable,但是在scan 'POESDataTest2'的时候出现了问题

网上搜了各种方案,hbase hbck显示POESDataTest2这个表有2个inconsistence,但是hbase hbck -repair, hbase hbck -repairHole都没有用。

重新去看日志

you know what???他始终找不到jar文件,为什么在加载的时候没有报错呢,因为我把hbase.table.sanity.checks这个property设置成false了,不报错不代表没错,OK?

感觉被hbase shell的提示坑了一把。

加载成功后,往表里put一个数据测试

发现索引表IndexTabelTest中没有数据,https://www.jianshu.com/p/d56584c45401文里说得很清楚,因为

hbase.coprocessor.abortonerror:如果coprocessor加载失败或者初始化失败或者抛出Throwable对象,则主机退出。设置为false会让系统继续运行,但是coprocessor的状态会不一致,所以一般debug时才会设置为false,默认是true;.说的很清楚了,虽然我之后上传了很多个版本的coprocessor,但是在集群重启之前它一直沿用着最早那个版本。将参数再调整为true,重新上传jar包

重新上传jar,重启集群。然后成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值