日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

lily+Solr 原理与配置

發布時間:2023/12/10 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lily+Solr 原理与配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

  • 為什么要引入lily和solr

? 在Hbase中,表的RowKey 按照字典排序, 單一的通過RowKey檢索數據的方式,不再滿足更多的需求,查詢成為Hbase的瓶頸,希望像Sql一樣快速檢索數據,Hbase之前定位的是大表的存儲,要進行這樣的查詢,往往是要通過類似Hive、Pig等系統進行全表的MapReduce計算,這種方式既浪費了機器的計算資源,又因高延遲使得應用黯然失色,于是HBase Secondary Indexing的方案出現了。

  • Solr

    Solr是一個獨立的企業級搜索應用服務器,是Apache Lucene項目的開源企業搜索平臺,其主要功能包括全文檢索、命中標示、分面搜索、動態聚類、數據庫集成,以及富文本(如Word、PDF)的處理。Solr是高度可擴展的,并提供了分布式搜索和索引復制。Solr 4還增加了NoSQL支持,以及基于Zookeeper的分布式擴展功能SolrCloud。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,Solr是一個高性能,采用Java5開發,基于Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展并對查詢性能進行了優化,并且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎,Solr可以高亮顯示搜索結果,通過索引復制來提高可用,性,提供一套強大Data Schema來定義字段,類型和設置文本分析,提供基于Web的管理界面。

  • Key-Value Store Indexer

這個組件非常關鍵,是Hbase到Solr生成索引的中間工具,在CDH5.3.2中的Key-Value Indexer使用的是Lily HBase Indexer 服務,Lily HBase Indexer是一款靈活的、可擴展的、高容錯的、事務性的,并且近實時的處理HBase列索引數據的分布式服務軟件。它是NGDATA公司開發的Lily系統的一部分,已開放源代碼,Lily HBase Indexer使用SolrCloud來存儲HBase的索引數據,當HBase執行寫入、更新或刪除操作時,Indexer通過HBase的replication功能來把這些操作抽象成一系列的Event事件,并用來保證寫入Solr中的HBase索引數據的一致性,并且Indexer支持用戶自定義的抽取,轉換規則來索引HBase列數據。Solr搜索結果會包含用戶自定義的columnfamily:qualifier字段結果,這樣應用程序就可以直接訪問HBase的列數據。

  • hbase+lily+solr架構

服務配置

hbase配置文件搜索index,啟用編制索引。

啟用復制

solr

  • collection創建腳本
# 用來創建solr collection cat > createcollection.sh << EOF # zk節點 ZK="worker-1" # 要創建的collection名稱 COLLECTION="hainiu" BASE=`pwd` # 分片數 SHARD=1 # 副本數 REPLICA=1 echo "create solr collection" rm -rf tmp/* # 生成配置文件 solrctl --zk $ZK:2181/solr instancedir --generate tmp/${COLLECTION}_configs # 上傳配置文件到zk solrctl --zk $ZK:2181/solr instancedir --create $COLLECTION tmp/${COLLECTION}_configs echo "如果collection名稱重復會報configuration重復錯誤,更換collection名稱" # solr創建collection solrctl --zk $ZK:2181/solr collection --create $COLLECTION -s $SHARD -r $REPLICA echo "如果collection名稱重復會報configuration重復錯誤,更換collection名稱" # 查看collection solrctl --zk $ZK:2181/solr collection --list EOF
  • 執行創建腳本
sh createcollection.sh

  • solr web驗證

  • solr創建field字段

使用postman或者curl命令操作solr api創建字段

方式一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/schema

lily hbase indexer

mkdir -p /root/solr-hbase/conf cd /root/solr-hbase
  • 準備morphline配置文件(解讀)
# 準備morphline配置文件 morphlines : [{# morphline配置id,與indexer配置文件中的morphlineID一致id : morphline1 importCommands : ["org.kitesdk.morphline.**", "com.ngdata.**"]commands : [{extractHBaseCells {# hbase字段映射mappings : [{# textinfo為hbase對應的列族,content為hbase對應的列名inputColumn : "textinfo:content"# 輸出列,對應solr中的field字段outputField : "content"# solr中字段類型type : "string"source : value}]}}]} ]

正式配置文件

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
  • 準備indexer配置文件
cat > conf/indexer-config.xml << EOF <?xml version="1.0"?> <indexer table="TextHbase" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper" mapping-type="row" ><!-- The relative or absolute path on the local file system to the morphline configuration file. --><!-- Use relative path "morphlines.conf" for morphlines managed by Cloudera Manager --><param name="morphlineFile" value="/root/solr-hbase/conf/morphlines.conf"/><!-- The optional morphlineId identifies a morphline if there are multiple morphlines in morphlines.conf --><!-- <param name="morphlineId" value="morphline1"/> --> </indexer> EOF
  • 執行lily hbase indexer刷新腳本
vim hbase2solr.sh # 填入如下內容 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
  • 安全模式執行lily hbase indexer刷新腳本

創建jaas.conf文件,填寫如下內容

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 # 填入如下內容 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
  • 執行hbase2solr.sh腳本
sh hbase2solr.sh

  • solr web驗證數據

海汼部落原創文章,原文鏈接:http://www.hainiubl.com/topics/75587

總結

以上是生活随笔為你收集整理的lily+Solr 原理与配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。