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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Key-Value Store Indexer(Lily HBase Indexer) 小型采坑

發(fā)布時間:2025/4/9 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Key-Value Store Indexer(Lily HBase Indexer) 小型采坑 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

環(huán)境:

Cloudera Express 5.12.1
JDK 1.8.0_92
CentOS 7

步驟1:數(shù)據(jù)導入到Hbase中(非正題,跳過)

hbase中表為allDoc,兩個Family:fulltext,fileInfo
fulltext中就一列:fulltext
fileInfo中有如下幾列serialNumber,verdictType,hashCode,fileName

步驟2:生成實體配置文件(我這里用的root賬戶)

solrctl instancedir --create /root/config/

  

步驟3:配置/root/config/conf/schema.xml,增加分詞器

<fields></fields>下增加字段,其中id為hbase的row_key,_version_字段必須有,否則報錯,我這里只加了fulltext和serialnumber,這里的是solr中的schema

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="serialnumber" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="fulltext" type="text_ch" indexed="true" stored="true" required="true" multiValued="false" /> <field name="_version_" type="long" indexed="true" stored="true"/>

  

增加中文分詞器,下載對應版本的分詞器:
下載地址:https://repository.cloudera.com/artifactory/cdh-releases-rcs/org/apache/lucene/lucene-analyzers-smartcn/
我用的是:https://repository.cloudera.com/artifactory/cdh-releases-rcs/org/apache/lucene/lucene-analyzers-smartcn/4.10.3-cdh5.12.1/lucene-analyzers-smartcn-4.10.3-cdh5.12.1.jar
下載之后記得放到目錄下/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/solr/webapps/solr/WEB-INF/lib/lucene-analyzers-smartcn-4.10.3-cdh5.12.1.jar
然后schema.xml加入text_ch

<fieldType name="text_ch" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/><filter class="solr.SmartChineseWordTokenFilterFactory"/></analyzer> </fieldType>

  步驟4:根據(jù)實體配置文件在Solr中建立collection

solrctl instancedir --create hbase-collection /root/config/ solrctl collection --create hbase-collection

  步驟5:創(chuàng)建 Lily HBase Indexer 配置,下面兩個文件我都放到了root文件夾下

新建一個XML文件morphline-hbase-mapper.xml,內(nèi)容如下:(其中allDoc是hbase中的表名稱)

<?xml version="1.0"?> <indexer table="allDoc" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper"><param name="morphlineFile" value="morphlines.conf"/> </indexer>

  創(chuàng)建morphlines.conf,內(nèi)容如下:(這里是hbase到solr的映射)

morphlines : [{id : morphlineimportCommands : ["org.kitesdk.**","com.ngdata.**"]commands : [{extractHBaseCells {mappings : [{inputColumn : "fulltext:fulltext"outputField : "fulltext"type : stringsource : value},{inputColumn : "fileInfo:serialNumber"outputField : "serialnumber"type : stringsource : value}]}}{ logDebug { format : "output record: {}", args : ["@{}"]}}]} ]

步驟6: 注冊 Lily HBase Indexer配置

hbase-indexer delete-indexer -n docIndex hbase-indexer add-indexer -n docIndex -c /root/morphline-hbase-mapper.xml -cp solr.zk=gs-server-5002:2181,gs-server-5001:2181,gs-server-5000:2181/solr -cp solr.collection=hbase-collection8 -z gs-server-5002:2181,gs-server-5001:2181,gs-server-5000:2181 hbase-indexer list-indexers #查看是否正常運行

步驟7: 批量導入:

Shell腳本:(lucene-analyzers-smartcn-4.10.3-cdh5.12.1.jar 在root目錄中也有一份,這個腳本也放到了root目錄中)

COLLECTION='hbase-collection' ZK='gs-server-5002:2181,gs-server-5001:2181,gs-server-5000:2181' 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/solr" libjars="lucene-analyzers-smartcn-4.10.3-cdh5.12.1.jar" export HADOOP_OPTS="-Djava.security.auth.login.config=conf/jaas.conf" hadoop --config $config jar $jar --conf $hbase_conf --libjars $libjars -D $opts --log4j $log4j --hbase-indexer-file morphline-hbase-mapper.xml --verbose --go-live --zk-host $zk --collection $COLLECTION

  

?

ZK為Zookeeper集群地址,修改COLLECTION為之前生成的,生效基本都保持不變morphline-hbase-mapper.xml是步驟5配置生成的xml文件

總體來說不算太難,但是有很多坑。。

因為批量導入采用的是MapReduce,經(jīng)常出現(xiàn)OOM,或者exit Code 154,Map 階段154這個忽略了,因為重試之后幾乎都可以通過(調(diào)整容器內(nèi)存可以直接避免這個問題),在調(diào)整Map Reduce的內(nèi)存過程中花了好多時間,另外還有就是編碼問題,出現(xiàn)SolrServerException: org.apache.solr.client.solrj.SolrServerException: java.lang.RuntimeException: [was class java.io.CharConversionException] Invalid UTF-8 character 0xffff at char #18928, byte #47990)

這個問題暫時未解決,查閱資料說可以用如下方法解決,正在嘗試(數(shù)據(jù)導入估計得2-3天,慢慢等等看了):

public static String stripNonCharCodepoints(String input) {StringBuilder retval = new StringBuilder();char ch;for (int i = 0; i < input.length(); i++) {ch = input.charAt(i);// Strip all non-characters// http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Noncharacter_Code_Point=True:]// and non-printable control characters except tabulator, new line and// carriage returnif (ch % 0x10000 != 0xffff && // 0xffff - 0x10ffff range step 0x10000ch % 0x10000 != 0xfffe && // 0xfffe - 0x10fffe range(ch <= 0xfdd0 || ch >= 0xfdef) && // 0xfdd0 - 0xfdef(ch > 0x1F || ch == 0x9 || ch == 0xa || ch == 0xd)) {retval.append(ch);}}return retval.toString();}

  

?

資料參考:

http://www.aboutyun.com/thread-24447-1-1.html

http://fbinbin.iteye.com/blog/2357294

https://blog.csdn.net/d6619309/article/details/51304135?locationNum=1&fps=1

https://github.com/apache/nutch/blob/master/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java#L76

https://blog.csdn.net/vegetable_bird_001/article/details/53420131

轉載于:https://www.cnblogs.com/eviltuzki/p/9019095.html

總結

以上是生活随笔為你收集整理的Key-Value Store Indexer(Lily HBase Indexer) 小型采坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。