您的位置:首页 > 其它

hbase-indexer环境搭建

2016-11-29 20:52 316 查看

介绍:

hbase + solr是非常成熟的查询方案、但在hbase增、删、改的同时还要维护solr索引是不是很无辜。基于此CDH就提供一个服务hbase-indexer。它的主要功能就是我们只需要操作hbase,hbase-indexer可以自动把索引添加到solr中。

下面是我自己画的示意图(比较low)、简单讲hbase-indexer就是承上启下的作用。



原理我就不讲了网上太多了、本文主要目的还是将环境搭建。如果大家想了解原理推荐链接:

http://blog.csdn.net/d6619309/article/details/51500368

Q:为什么只介绍CDH的版本、那apache版本的了?

A:本大厨只找到CDH版的hbase-indexer、apache版没查到。谁如果知道apache版有类似功能可以留言。

准备:

已安装好的CDH版hadoop5.x版本及同样版本的Hbase;
下载同版本CDH版solr和hbase-indexer;
下载地址: http://archive-primary.cloudera.com/cdh5/cdh/5/ 官方地址(本大厨是按照官网一步步来安装的): https://github.com/NGDATA/hbase-indexer/wiki


步骤

一:打开官网:

https://github.com/NGDATA/hbase-indexer/wiki



二:得到Hbase-indexer软件

官网提供方法(本大厨没用):



本大厨是在以下链接找的、要和你的CDH-hadoop版本一致。同时下载hbase-indexer和solr。(自己去找solr就不截图了。。。。)。同时解压。





三:配置Hbase-indexer

其实就是配置zookeeper地址。因为hbase-indexer是依赖于zookeeper的。

官网给了二种方案:

第一是修改hbase-indexer-site.xml的配置文件。

第二就是把hbase配置文件hbase-site.xml给copy进来。

本大厨就是在这遇到第一个坑、因为我是按照方案二做的结果后面zookeeper报错。原因没找到。所以后来改用方案一跳出此坑。



四:配置hbase

这个没什么可说的、就是把框里的内容(hbase的复制功能)加到hbase的hbase-site.xml文件中。要注意的问题如果配置文件之前就有的项就不要重复添加了。



五:把hbase-indexer的jar添加到hbase中



这是官网给我挖的第二个坑。。。。因为hbase-indexer目录下就没有lib这个文件夹。这一步我再解释一下、官网要求我把hbase-indexer下的lib里的jar复制到hbase的lib里面。但问题时hbase-indexer下根本就没有lib这个文件夹。所以我要做的是找到hbase-indexer的lib。

然后我找到CDH-hadoop的安装目录看到以下目录:



注意:这个目录下的jar都是引用过来的、具体的路径在../../../jars里面。所以找到这个jars复制到hbase-indexer的根目录下、并重命名为lib。



六:启动solr服务

这个强调一点:一定要按下面这个来、不要用tomcat等其他服务器启动solr、具体原因我在报错的位置会讲到。这个这个是用solr自带服务器默认端口是8983,我在启动的时候报 Address already in use,执行命令lsof -i:8983。看看谁在占用不影响直接干掉。





表示安装成功。

注意:启动成功后该命令窗口(本大厨用的是CRT)留着,重新打开新的窗口不然又可能不小心solr服务就停了。

这里提一下、CDH版的solr目录和apache版目录稍有不同、其实把apache版弄明白了、CDH版随便看看就懂了。稍微提一下。CDH版的solrHome和solrCore。如图example下的solr文件夹就是solrHome。本大厨是根据zoo.cfg判断的(目录下有zoo.cfg说明是solrHome)。而collection1这个就是solrCore。。



七:切换到Tutorial



八:启动hbase-indexer服务



./hbase-indexer 回车可以看到可执行命令如下:

server:代表启服务

add-indexer:等不解释一看就明白。eg:./hbase-indexer add-indexer -n indexerName



这里我们执行./hbase-indexer server 启动服务

执行成功的场景…(执行成功后这个命令窗口还是要留着,换新的窗口,以后的执行可以通过此命令窗口看日志。)



注意:本大厨在这执行时候遇到两个错。

第一:zookeeper问题。解决方案:见【三:配置Hbase-indexer】。

第二:报nosuchclass/method。。反正就是找不到类或者方法。解决方案:【五:把hbase-indexer的jar添加到hbase中】最终这个lib中会有很多重复的jar包。所以大家要了解不是说只有缺jar才会报这种错、jar冲突也会报这个错。具体哪个jar包导致本大厨没查到。本大厨秉承愚公移山精神把重复的都删了。删了半小时。。。。。

九:创建hbase表

没什么可讲的、表名怎么取无所谓,但REPLICATION_SCOPE必须设为1。



十:创建对应映射关系index



1:就是在你的hbase-indexer目录下新建一个文件indexdemo-indexer.xml(hbase和solr映射关系)、内容也帮你写好了、大家都是聪明人(本大厨除外)、这是官网提供的demo、你理解意思就行。这里大家是不是有个疑问,知道solr的就知道,solr必须会有个id的,但这个映射文件中没有,后来我的solr索引写入失败、我以为是这块问题就把id加上了,value对应着rowkey。结果报错。。所以这块大家不要画蛇添足按照官网说的做。

执行完后再hbase-indexer的bin里面执行:./hbase-indexer list-indexers



以上:代表成功。否则你就去看日志。

十一:测试hbase中put一条数据、看solr中是否有索引



测试结果:



注意:如果在put数据后、hbase中有。日志也没报错的话,在solr界面你需要Document(s)执行提交、再去查。有可能solr没有设置自动提交。如何设置百度去。这个很简单。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息