实战手把手 | Lily HBase NRT Indexer使用指南

Posted 中兴大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战手把手 | Lily HBase NRT Indexer使用指南相关的知识,希望对你有一定的参考价值。

文 | 张东涛@中兴大数据

HBase-Solr组件是Cloudera 提供的,实际是NGDATA的HBase Indexer开源项目。

HBase Indexer 为HBase提供快速查询,他允许不写代码,快速容易的把HBase行索引到Solr。HBase Indexer 支持 Cloudera Search。

HBase Indexer利用了HBase的Replication功能,把HBase数据修改(Put,Delete)都抽像成为一系列Event,然后就可以同步到Solr里了。

配置Lily HBase NRT Indexer服务
1
HBase配置

登录manager,修改HBase的【备份配置】内容,如下,把“启用复制”选项设置为true,并保存到集群:


重启HBase集群服务。

2
启动Solr

界面启动Solr集群服务


3
启动HBase Indexer

登录集群中部署HBase的某一主机:

cd /home/mr/hbase-solr

./bin/hbase-indexer server &


查看进程:

ps -ef|grep hbase-solr


实战手把手 | Lily HBase NRT Indexer使用指南

使用Lily HBase NRT Indexer示例
1
HBase列族上设置可复制
  • 新建的HBase表列族上设置可复制

mr用户登录HBase节点主机

创建一张新表,在表需要编制索引的列族上设置REPLICATION_SCOPE:

$ hbase shell

hbase> create 'indexdemo-user', { NAME => 'info', REPLICATION_SCOPE => '1' }


  • 已存在的HBase表列族上设置可复制

如果indexdemo-user表已存在且有info列族,则按如下设置列族为可复制:

$ hbase shell

hbase>disable 'indexdemo-user'

hbase>alter 'indexdemo-user', { NAME => 'info', REPLICATION_SCOPE => '1' }

hbase>enable 'indexdemo-user'


2
增加Solr集合
  1. 确保Solr启动正常

  2. mr用户登录Solr的某一主机

  3. 执行以下命令增加Solr集合:

solrctl instancedir --generate /home/mr/solr/instance1

# 修改 /home/mr/solr/instance1/conf/schema.xml文件,加入Solr索引的<field>

# 这里示例加入col1、col2

# <field name="col1"  type="string"  indexed="true"  stored="true" />

# <field name="col2"  type="string"  indexed="true"  stored="true" />

solrctl instancedir --create instance1 /home/mr/solr/instance1

solrctl collection --create collection1 -s 1 -r 2 -c instance1 -a


界面可查看SolrCloud,对应的集合活动主机为odpp157:

实战手把手 | Lily HBase NRT Indexer使用指南

打开集合collection1活动的主机界面http://10.43.156.157:8983/solr,可以看到Solr集合信息:

实战手把手 | Lily HBase NRT Indexer使用指南

3
编制索引

这里以对HBase的indexdemo-user表编制索引为例。mr登录HBase-Solr部署的主机,在/home/mr/hbase-solr下创建一个新的xml文件,indexdemo-indexer.xml:

<?xml version="1.0"?>

<indexer table="indexdemo-user">

  <field name="col1" value="info:firstname"/><!—field name 对应Solr集合中schema的field,value对应HBase的列族中的列 -->

  <field name="col2" value="info:lastname"/>

  <field name="age_i" value="info:age"/><!—Solr集合的schema配置的动态可索引的字段参考schema配置

         <dynamicField name="*_i"  type="int"   indexed="true"  stored="true"/>

-->

</indexer>


增加一个索引:

cd /home/mr/hbase-solr

./bin/hbase-indexer add-indexer -n myindexer1 -c indexdemo-indexer.xml

        -cp solr.zk=odpp157,odpp160,odpp181/solr -cp solr.collection=collection1

        -z  odpp157:2181,odpp160:2181,odpp181:2181


如果需要对编制的索引文件indexdemo-indexer.xml进行更改,若使其生效,则执行更新一个编制的索引:

cd $INDEXER_HOME

./bin/hbase-indexer update-indexer -n myindexer1 -c indexdemo-indexer.xml

        -cp solr.zk=odpp157,odpp160,odpp181/solr -cp solr.collection=collection1

        -z  odpp157:2181,odpp160:2181,odpp181:2181


4
更新HBase表内容

以更新indexdemo-user表为例:

hbase> put 'indexdemo-user', 'row10', 'info:firstname', 'John123'

hbase> put 'indexdemo-user', 'row20', 'info:lastname', 'Smith123'

hbase> put 'indexdemo-user', 'row30', 'info:age', '30'


5
Solr查询HBase的更新内容索引

访问Solr搜索界面,如:http://10.43.156.157:8983/solr,选择collection1集合对应切片的query按钮执行查询:

实战手把手 | Lily HBase NRT Indexer使用指南

可以看到更新到HBase表的索引内容:

实战手把手 | Lily HBase NRT Indexer使用指南

实战手把手 | Lily HBase NRT Indexer使用指南

有诚意的分割线,插播一条有诚意招聘信息:


实战手把手 | Lily HBase NRT Indexer使用指南


分享精彩 欢迎转载
授权联系中兴大数据(ZTE_BigData)




以上是关于实战手把手 | Lily HBase NRT Indexer使用指南的主要内容,如果未能解决你的问题,请参考以下文章

Key-Value Store Indexer(Lily HBase Indexer) 小型采坑

HBase in Action前三章笔记

HBase in Practice - 性能监控及问题解决

手把手教你安装Hbase,一次成功!

手把手教你安装Hbase,一次成功!

数据批量导入HBase