CDH5.8.2集成版本Hbase建立solr二级索引
1、确认所建Hbase表开启复制功能,默认不开启,CDH版本很多已开启
# create 'table',{NAME => 'info', REPLICATION_SCOPE => 1}
#其中1表示开启replication功能,0表示不开启,默认为0
对于已建立的表:
# disable 'table'
# alter 'table',{NAME => 'info', REPLICATION_SCOPE => 1}
# enable 'table'
#describe 'table’ # 可以查看REPLICATION_SCOPE的值
2、创建solr实体配置文件本地目录
# solrctl instancedir --generate /home/dbcfg/caiyixuan # 路径自定义
创建后会在caiyixuan目录下生成一个conf文件夹,里面是相关配置文件。
3、编辑conf文件夹里的schema.xml文件
hbase表中需要索引的列对应scheme.xml 的filed节点,其中的name属性值要与Morphline.conf文件中的outputField属性值对应
注意:此处的name自定义,但不能有重复
4、创建collection实例并配置文件上传到zookeeper
# solrctl instancedir --create caiyixuan /home/dbcfg/caiyixuan
注意:之前如果有创建过,需要先删除再创建,或者覆盖更新
(# solrctl instancedir --update caiyixuan /home/dbcfg/caiyixuan)
5、上传到zookeeper之后,其他节点就可以从zookeeper下载配置文件。接着创建collection
# solrctl collection --create caiyixuan -s 15 -r 2 -m 50
(红色参数表示s表示设置Shard数为15,-r表示设置的replica数为2,-m表示最大shards数目,collection名称是caiyixuan,后面在Morphline.conf配置id时用到!)
6、在目录caiyixuan路径下建立xml文件,文档以Mapper.xml为例
table对应hbase表名,field name对应solr里的索引字段,即schema.xml里的name字段。value是由hbase表的列簇:列 组成
7、在hbase-solr目录下的bin目录下执行hbase-indexer
# cd /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/bin # 以实际版本路径为准
# ./hbase-indexer add-indexer -n caiyixuanindexer -c /home/dbcfg/caiyixuan/Mapper.xml -cp solr.zk=master:2181,slaver1:2181,slaver2:2181,slaver3:2181,slaver4:2181/solr -cp solr.collection=caiyixuan -z master:2181,slaver1:2181,slaver2:2181,slaver3:2181,slaver4:2181
此处caiyixuanindexer是索引分度管理器,自定义不能重复;Mapper.xml就是在conf里建立的映射文件的名称;caiyixuan是创建的collection的名称。
(update-indexer,可用于更新相关配置信息,如新增字段索引!)
8、添加拼音分词和smartcn分词
添加 pinyin4j-2.5.0.jar lucene-analyzers-smartcn-4.10.3.jar lucene-analyzers-smartcn-4.10.3-cdh5.8.2.jar IKAnalyzer2012FF_u1.jar 到/opt/cloudera/parcels/CDH/lib/solr/webapps/solr/WEB-INF/lib 下。分发到其它从节点
修改schema.xml
最后重启Solr服务
另外,附上Morphline.conf的配置文件:
如果没有添加分词依赖的jar包,重启时会报错:
Caused by: org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory
Unableto create core [caiyixuan_shard9_replica2] Caused by:org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory
========================================================================
http://master:8983/solr/admin/collections?action=DELETE&name=caiyixuan
删除collection
http://master:8983/solr/admin/configs?action=DELETE&name=caiyixuan
删除配置文件
更新:hbase-indexer update-indexer -n caiyixuanindexer
查看:hbase-indexer list-indexers
删除:hbase-indexer delete-indexer -n caiyixuanindexer