欢迎投稿

今日深度:

HBase Coprocessor实现HBase二级索引,

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包

  • 将表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,重启集群。然后成功

www.htsjk.Com true http://www.htsjk.com/hbase/38588.html NewsArticle HBase Coprocessor实现HBase二级索引, 用Coprocessor实现HBase的二级索引,遇到了很多问题,记录一下 首先本次的感想是: 官方文档很重要! 日志非常重要!!! 用的数据是POES粒子通量数据...
相关文章
    暂无相关文章
评论暂时关闭