1.环境搭建
1.1.环境说明
环境搭建过程中用到4个节点,都为虚拟机。在部署HBase-Indexer环境之前已经部署好了zookeeper、HDFS、Yarn、HBase环境,这篇文档就不赘述了,本文重点讲解HBase-Indexer的搭建过程,其中HBase-Indexer部署在三个节点上,和HRegionServer所在节点相同,Solr服务部署一个节点。具体各个服务在节点分布的情况如表格1.1所示,其中“1”表示有服务存在该节点上。
表1.1.服务分布情况
1.2.下载 HBase-Solr(HBase-Indexer)
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
这里搭建环境下载的是 hbase-solr-1.5-cdh5.11.0,如图1.2所示。
图1.2.HBase-Solr下载
1.3.配置HBase-Indexer
1.3.1.配置hbase-indexer-site.xml文件
(1)、解压刚才下载的hbase-solr-1.5-cdh5.11.0.tar.gz,在hbase-indexer-dist/target目录下将hbase-indexer-1.5-cdh5.11.0.tar.gz拷贝到你需要安装的目录下;
(2)、解压hbase-indexer-1.5-cdh5.11.0.tar.gz;
tar -zxvf hbase-indexer-1.5-cdh5.11.0.tar.gz
(3)、配置 hbase-indexer,在conf目录下编辑hbase-indexer-site.xml文件,编辑内容如下:
hbaseindexer.zookeeper.connectstring
node1:2181,node3:2181,node4:2181
hbase.zookeeper.quorum
node1,node3,node4
编辑hbase-indexer-site.xml后如图1.3.1所示
图1.3.1.hbase-indexer-site.xml文件配置
1.3.2.配置hbase-indexer-env.sh文件
在文件hbase-indexer-env.sh配置JAVA_HOME,配置完成后如图1.3.2所示。
图1.3.1.hbase-indexer-env.sh文件配置
配置完成后,将hbase-indexer拷贝到所有HRegionServer所在的节点上,即node2,node3,node4。
1.4.配置HBase
为了使用HBase-Indexer,必须在HBase启用replication,编辑HBase的hbase-site.xml,加入配置内容如下。
hbase.replication
true
replication.source.ratio
1.0
replication.source.nb.capacity
1000
replication.replicationsource.implementation
com.ngdata.sep.impl.SepReplicationSource
配置完成后如图1.4所示。
图1.4.HBase配置
将配置好的文件拷贝到其他HBase节点上。
1.5.拷贝HBase使用Hbase-Indexer需要的jar
将hbase-indexer-1.5-cdh5.11.0.tar.gz解压后lib中的所有以 hbase-sep 开头的jar加入到HBase的lib目录里。
cp lib/hbase-sep-* $HBASE_HOME/lib
lib/目录下一共有四个jar需要拷贝到HBase安装目录下的lib/中,具体jar包如图1.5所示。
图1.5.需要拷贝的jar包
1.6.下载Solr服务并安装
下载地址为:http://archive-primary.cloudera.com/cdh5/cdh/5/,这里测试下载的版本为solr-4.10.3-cdh5.11.0.tar.gz,如图1.6所示。
图1.6.Solr服务下载
对于简单的测试可以不用对Solr进行特别的配置,下载完成后解压到相应的安装目录。
1.7.启动服务
(1)、启动HDFS。
./bin/start-all.sh
(2)、启动HBase。
./bin/start-hbase.sh
(3)、在Solr服务的安装目录下的example目录下启动Solr。
java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkHost=node1:2181,node3:2181,node4:2181/solr -jar start.jar
Solr启动成功后会输出如图1.7.1.所示类似的内容,启动后不要关闭当前窗口,关闭后Solr服务就死了。
图1.7.1.Solr启动成功
(4)、在HBase-Indexer的安装目录下启动HBase-Indexer。
./bin/hbase-indexer server
HBase-Indexer启动成功后会输出如图1.7.2.所示类似的内容。启动后不要关闭当前窗口,关闭后HBase-Indexer服务就死了。
图1.7.2.HBase-Indexer启动成功
2.HBase-Indexer测试
2.1.在HBase中创建测试表
创建表的时候必须开启replication,即设置REPLICATION_SCOPE => '1',在其中一台机器上执行下面的命令。
./bin/hbase shell
create 'indexdemo-user', { NAME => 'info', REPLICATION_SCOPE => '1' }
创建成功后如图2.1所示。
图2.1.创建测试表
2.2.创建索引
在HBase-Indexer的demo目录下给了一个创建索引的文件user_indexer.xml,我们可以自己参照着编写一个自己的,也可以直接使用这个。这里测试我们直接使用demo目录下的 user_indexer.xml。只需要在一个hbase-indexer服务节点上执行下面命令就可以了。
./bin/hbase-indexer add-indexer -n myindexer -c user_indexer.xml -cp solr.zk=localhost:2181/solr -cp solr.collection=collection1
索引创建成功后可以通过下面的命令来查看已经创建的索引,结果如图2.2所示。
./bin/hbase-indexer list-indexer solr.zk=localhost:2181/solr
图2.2.查看创建的索引
对于solr.zk这个参数,好像还必须是localhost:port,我测试了一下如果写的是远程节点上的zk,indexer会创建失败,至于为没找到原因。
hbase-indexer的命令可以通过./bin/hbase-indexer来查看,其中主要有:
add-indexer
update-indexer
delete-indexer
list-indexers
比如查看add-indexer如何使用,可以这样查看 ./bin/hbase-indexer add-indexer。
2.3.准备测试数据
往刚才创建好的HBase表indexdemo-user中put一些测试数据。用于在Solr服务的管理界面进行测试。具体操作如下所示,操作完成后可以通过 scan 来查看indexdemo-user中是否有数据,如图2.3所示。
put 'indexdemo-user', 'row1', 'info:firstname', 'huang.zongxing'
put 'indexdemo-user', 'row2', 'info:firstname', 'John'
put 'indexdemo-user', 'row3', 'info:firstname', 'John-haha'
put 'indexdemo-user', 'row4', 'info:firstname', 'John-haha'
put 'indexdemo-user', 'row4', 'info:lastname','hello'
put 'indexdemo-user', 'row4', 'info:age',21
图2.3.测试数据
2.4.Solr的管理界面测试查询
2.4.1.单条件查询
进入Solr的管理界面,点击左侧的“Query”进入Solr的查询界面,在表示为“q”的输入框中输入查询条件“firstname_s:huang.zongxing”,默认是“*:*”,点击“Execute Query”按钮进行查询,查询结果如图2.4.1所示。
图2.4.1.Solr单条件查询
2.4.2.多条件查询
同样在Query界面,Solr的多条件查询实际上是“q”和“fq”同时使用,其处理也就是先通过“q”中的条件进行查询,然后用“fq”中的条件对“q”查询到的结果进行过滤,“fq”中可以填写多个条件,不同条件之间通过“&”分隔。这里我们在“q”中输入“firstname_s:John-haha”,在“fq”中输入“lastname_s:hello”,最后的查询结果如图2.4.2所示。
图2.4.2.Solr多条件查询
2.4.3.过滤查询字段
在Solr中,我们也可以像SQL那样,查询我们只需要的字段,我们可以在“fl”中输入需要查看的字段,这里测试我们只查看所有数据“id”字段,所以在“q”中输入“*:*”,在“fl”中输入“id”,点击执行,查询结果如图2.4.3所示。
图2.4.3.过滤查询字段
3.关于Solr管理界面的说明
3.1.基本查询
3.2.检索运算符
【参考】
[1] https://my.oschina.net/sniperLi/blog/880610
[2] https://github.com/NGDATA/hbase-indexer/wiki/Installation