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</str></lst> <lst name="success"> <lst> <lstname="responseHeader"> <int name="status">0</int> <int name="QTime"> 7826</int> </lst><str name="core"> caiyixuan_shard7_replica1</str></lst> <lst> <lst name="responseHeader"> <intname="status"> 0</int> <int name="QTime">8064</int> </lst> <str name="core
========================================================================
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