lily+Solr 原理与配置
概述
- 為什么要引入lily和solr
? 在Hbase中,表的RowKey 按照字典排序, 單一的通過RowKey檢索數(shù)據(jù)的方式,不再滿足更多的需求,查詢成為Hbase的瓶頸,希望像Sql一樣快速檢索數(shù)據(jù),Hbase之前定位的是大表的存儲,要進行這樣的查詢,往往是要通過類似Hive、Pig等系統(tǒng)進行全表的MapReduce計算,這種方式既浪費了機器的計算資源,又因高延遲使得應(yīng)用黯然失色,于是HBase Secondary Indexing的方案出現(xiàn)了。
-
Solr
Solr是一個獨立的企業(yè)級搜索應(yīng)用服務(wù)器,是Apache Lucene項目的開源企業(yè)搜索平臺,其主要功能包括全文檢索、命中標(biāo)示、分面搜索、動態(tài)聚類、數(shù)據(jù)庫集成,以及富文本(如Word、PDF)的處理。Solr是高度可擴展的,并提供了分布式搜索和索引復(fù)制。Solr 4還增加了NoSQL支持,以及基于Zookeeper的分布式擴展功能SolrCloud。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,Solr是一個高性能,采用Java5開發(fā),基于Lucene的全文搜索服務(wù)器。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現(xiàn)了可配置、可擴展并對查詢性能進行了優(yōu)化,并且提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎,Solr可以高亮顯示搜索結(jié)果,通過索引復(fù)制來提高可用,性,提供一套強大Data Schema來定義字段,類型和設(shè)置文本分析,提供基于Web的管理界面。
-
Key-Value Store Indexer
這個組件非常關(guān)鍵,是Hbase到Solr生成索引的中間工具,在CDH5.3.2中的Key-Value Indexer使用的是Lily HBase Indexer 服務(wù),Lily HBase Indexer是一款靈活的、可擴展的、高容錯的、事務(wù)性的,并且近實時的處理HBase列索引數(shù)據(jù)的分布式服務(wù)軟件。它是NGDATA公司開發(fā)的Lily系統(tǒng)的一部分,已開放源代碼,Lily HBase Indexer使用SolrCloud來存儲HBase的索引數(shù)據(jù),當(dāng)HBase執(zhí)行寫入、更新或刪除操作時,Indexer通過HBase的replication功能來把這些操作抽象成一系列的Event事件,并用來保證寫入Solr中的HBase索引數(shù)據(jù)的一致性,并且Indexer支持用戶自定義的抽取,轉(zhuǎn)換規(guī)則來索引HBase列數(shù)據(jù)。Solr搜索結(jié)果會包含用戶自定義的columnfamily:qualifier字段結(jié)果,這樣應(yīng)用程序就可以直接訪問HBase的列數(shù)據(jù)。
- hbase+lily+solr架構(gòu)
服務(wù)配置
hbase配置文件搜索index,啟用編制索引。
啟用復(fù)制
solr
- collection創(chuàng)建腳本
- 執(zhí)行創(chuàng)建腳本
- solr web驗證
- solr創(chuàng)建field字段
使用postman或者curl命令操作solr api創(chuàng)建字段
方式一postman:
方式二curl:
# 非安全模式 curl -X POST -H 'Content-Type:application/json' -d '{"add-field":{"name":"content","type":"text_en","stored":true,"indexed":true} }' http://worker-3:8983/solr/hainiu/schema # 安全模式 用戶名和密碼可以隨意輸入 curl --negotiate -u xiniu:xiniu -X POST -H 'Content-Type:application/json' -d '{"add-field":{"name":"content","type":"text_en","stored":true,"indexed":true} }' http://worker-3:8983/solr/hainiu0602/schemalily hbase indexer
mkdir -p /root/solr-hbase/conf cd /root/solr-hbase- 準(zhǔn)備morphline配置文件(解讀)
正式配置文件
cat > conf/morphlines.conf << EOF morphlines : [{id : morphline1 importCommands : ["org.kitesdk.morphline.**", "com.ngdata.**"]commands : [{extractHBaseCells {mappings : [{inputColumn : "textinfo:content"outputField : "content"type : "string"source : value}]}}]} ] EOF- 準(zhǔn)備indexer配置文件
- 執(zhí)行l(wèi)ily hbase indexer刷新腳本
- 安全模式執(zhí)行l(wèi)ily hbase indexer刷新腳本
創(chuàng)建jaas.conf文件,填寫如下內(nèi)容
mkdir -p conf/jaas.conf Client {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTab=truekeyTab="/root/solr-hbase/solr.keytab"storeKey=trueuseTicketCache=falseprincipal="solr@HAINIU.COM"; }; vim hbase2solr.sh # 填入如下內(nèi)容 COLLECTION='hainiu' ZK='worker-1' echo 'Delete previous docs...' solrctl collection --deletedocs $COLLECTION echo 'Lily HBase MapReduce indexing...' config="/etc/hadoop/conf.cloudera.yarn" parcel="/opt/cloudera/parcels/CDH" jar="$parcel/lib/hbase-solr/tools/hbase-indexer-mr-*-job.jar" hbase_conf="/etc/hbase/conf/hbase-site.xml" opts="'mapred.child.java.opts=-Xmx1024m'" log4j="$parcel/share/doc/search*/examples/solr-nrt/log4j.properties" zk="$ZK:2181/solr" # libjars="lib/lucene-analyzers-smartcn-4.10.3-cdh5.14.2.jar" export HADOOP_OPTS="-Djava.security.auth.login.config=conf/jaas.conf" hadoop --config $config jar $jar --conf $hbase_conf -D $opts --log4j $log4j --hbase-indexer-file conf/indexer-config.xml --verbose --go-live --zk-host $zk --collection $COLLECTION- 執(zhí)行hbase2solr.sh腳本
- solr web驗證數(shù)據(jù)
海汼部落原創(chuàng)文章,原文鏈接:http://www.hainiubl.com/topics/75587
總結(jié)
以上是生活随笔為你收集整理的lily+Solr 原理与配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 多条件统计
- 下一篇: 关于dialog的一点东西