W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr支持將其索引和事務(wù)日志文件寫入和讀取到HDFS分布式文件系統(tǒng)。
這不使用Hadoop MapReduce來(lái)處理Solr數(shù)據(jù),而只是使用HDFS文件系統(tǒng)進(jìn)行索引和事務(wù)日志文件存儲(chǔ)。要使用Hadoop MapReduce處理Solr數(shù)據(jù),請(qǐng)參閱Solr contrib區(qū)域中的MapReduceIndexerTool。
要使用HDFS而不是本地文件系統(tǒng),您必須使用Hadoop 2.x,并且需要指示Solr使用HdfsDirectoryFactory。還有幾個(gè)要定義的附加參數(shù)。這些可以通過(guò)以下三種方式之一進(jìn)行設(shè)置:
對(duì)于獨(dú)立的Solr實(shí)例,在啟動(dòng)Solr之前,應(yīng)該確保修改一些參數(shù)。這些可以在solrconfig.xml中設(shè)置(下面的更多內(nèi)容),或者在啟動(dòng)時(shí)傳遞給bin/solr腳本。
如果不修改solrconfig.xml,則可以使用以下命令在HDFS上啟動(dòng)Solr:
bin/solr start -Dsolr.directoryFactory=HdfsDirectoryFactory
-Dsolr.lock.type=hdfs
-Dsolr.data.dir=hdfs://host:port/path
-Dsolr.updatelog=hdfs://host:port/path
這個(gè)例子將以獨(dú)立模式啟動(dòng)Solr,使用定義的JVM屬性(在下面更詳細(xì)地解釋)。
在SolrCloud模式中,最好將數(shù)據(jù)和更新日志目錄保留為Solr自帶的默認(rèn)值,并簡(jiǎn)單地指定solr.hdfs.home。所有動(dòng)態(tài)創(chuàng)建的集合將在solr.hdfs.home根目錄下自動(dòng)創(chuàng)建相應(yīng)的目錄。
bin/solr start -c -Dsolr.directoryFactory=HdfsDirectoryFactory
-Dsolr.lock.type=hdfs
-Dsolr.hdfs.home=hdfs://host:port/path
該命令使用定義的JVM屬性以SolrCloud模式啟動(dòng)Solr。
上面的例子假設(shè)您每次使用bin/solr啟動(dòng)Solr的時(shí)候都會(huì)傳遞JVM參數(shù)作為start命令的一部分。但是,bin/solr查找名為solr.in.sh(在Windows上為solr.in.cmd)的包含文件來(lái)設(shè)置環(huán)境變量。默認(rèn)情況下,該文件位于bin目錄中,您可以對(duì)其進(jìn)行修改以永久添加HdfsDirectoryFactory設(shè)置,并確保每次啟動(dòng)Solr時(shí)都使用它們。
例如,要將JVM參數(shù)設(shè)置為在SolrCloud模式下運(yùn)行時(shí)始終使用HDFS(如上所示),則可以添加一個(gè)如下所示的部分:
# Set HDFS DirectoryFactory & Settings
-Dsolr.directoryFactory=HdfsDirectoryFactory \
-Dsolr.lock.type=hdfs \
-Dsolr.hdfs.home=hdfs://host:port/path \
為了提高性能,HdfsDirectoryFactory使用一個(gè)將緩存HDFS塊的目錄。這種緩存機(jī)制是為了替代Solr所使用的標(biāo)準(zhǔn)文件系統(tǒng)緩存。默認(rèn)情況下,此緩存分配在堆外。此緩存通常需要相當(dāng)大,您可能需要提高您正在運(yùn)行Solr的特定JVM的堆內(nèi)存限制。對(duì)于Oracle / OpenJDK JVM,以下是一個(gè)示例命令行參數(shù),您可以使用它在啟動(dòng)Solr時(shí)提高限制:
-XX:MaxDirectMemorySize=20g
HdfsDirectoryFactory 有許多設(shè)置,它們被定義為 directoryFactory 配置的一部分。
Solr將集合數(shù)據(jù)寫入HDFS中的根位置。不是為數(shù)據(jù)目錄或更新日志目錄指定HDFS位置,而是使用此位置來(lái)指定一個(gè)根位置,并在該HDFS位置中自動(dòng)創(chuàng)建一切。這個(gè)參數(shù)的結(jié)構(gòu)是hdfs://host:port/path/solr
。
啟用塊緩存。默認(rèn)是true
。
啟用讀緩存。默認(rèn)是true
。
啟用直接內(nèi)存分配。如果為false
,則使用堆。默認(rèn)是true
。
要分配的內(nèi)存塊的數(shù)量。每個(gè)平板大小為128 MB。默認(rèn)是1
。
為所有SolrCores啟用/禁用一個(gè)全局緩存。使用的設(shè)置將來(lái)自第一個(gè)創(chuàng)建的HdfsDirectoryFactory。默認(rèn)是true
。
true | 啟用NRTCachingDirectory的使用。默認(rèn)是true
。
NRTCachingDirectory最大段大小的合并。默認(rèn)是16
。
NRTCachingDirectory最大緩存大小。默認(rèn)是192
。
傳遞HDFS客戶端配置文件的位置 - 例如HDFS HA所需的位置。
在嘗試訪問(wèn)像 HDFS 這樣的核心服務(wù)時(shí),可以將Hadoop配置使用Kerberos協(xié)議來(lái)驗(yàn)證用戶身份。如果您的HDFS目錄使用Kerberos進(jìn)行保護(hù),那么您需要配置Solr的HdfsDirectoryFactory,以使用Kerberos進(jìn)行身份驗(yàn)證,以讀取和寫入HDFS。要從Solr啟用Kerberos身份驗(yàn)證,您需要設(shè)置以下參數(shù):
設(shè)置為true
,則表示啟用Kerberos身份驗(yàn)證。默認(rèn)是false
。
密鑰表文件包含Kerberos主體和加密密鑰對(duì),當(dāng)Solr嘗試使用安全的Hadoop進(jìn)行身份驗(yàn)證時(shí),允許進(jìn)行無(wú)密碼驗(yàn)證。
此文件將需要在此參數(shù)中提供的相同路徑上的所有Solr服務(wù)器上存在。
Solr應(yīng)使用Kerberos主體進(jìn)行身份驗(yàn)證以確保Hadoop安全;典型的Kerberos V5主體的格式是:primary/instance@realm
。
以下是solrconfig.xml在HDFS上存儲(chǔ)Solr索引的示例配置:
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
<str name="solr.hdfs.home">hdfs://host:port/solr</str>
<bool name="solr.hdfs.blockcache.enabled">true</bool>
<int name="solr.hdfs.blockcache.slab.count">1</int>
<bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool>
<int name="solr.hdfs.blockcache.blocksperbank">16384</int>
<bool name="solr.hdfs.blockcache.read.enabled">true</bool>
<bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool>
<int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int>
<int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int>
</directoryFactory>
如果使用Kerberos,則需要將三個(gè)與Kerberos相關(guān)的屬性添加到solrconfig.xml中的<directoryFactory>元素,例如:
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
...
<bool name="solr.hdfs.security.kerberos.enabled">true</bool>
<str name="solr.hdfs.security.kerberos.keytabfile">/etc/krb5.keytab</str>
<str name="solr.hdfs.security.kerberos.principal">solr/admin@KERBEROS.COM</str>
</directoryFactory>
在HDFS中運(yùn)行Solr的一個(gè)好處是,當(dāng)監(jiān)督注意到碎片已經(jīng)停止時(shí),能夠自動(dòng)添加新的副本。由于“gone”的索引分片存儲(chǔ)在HDFS中,所以會(huì)創(chuàng)建一個(gè)新的核心,新的核心將指向HDFS中現(xiàn)有的索引。
在共享文件系統(tǒng)上使用 autoAddReplicas = true 創(chuàng)建的集合自動(dòng)添加了啟用的副本。以下設(shè)置可用于重寫 <solrcloud> solr. xml 部分中的默認(rèn)值。
監(jiān)督團(tuán)隊(duì)檢查之間的時(shí)間(以毫秒為單位)檢測(cè)并可能采取行動(dòng)建立替代復(fù)制品。默認(rèn)是10000
。
在首次發(fā)現(xiàn)替換副本之后,等待啟動(dòng)替換副本的最短時(shí)間(以毫秒為單位)。這對(duì)于在停止或啟動(dòng)群集時(shí)防止誤報(bào)很重要。默認(rèn)是30000
。
延遲(以毫秒為單位)之后,標(biāo)記為關(guān)閉的副本將被標(biāo)記為未標(biāo)記。默認(rèn)是60000
。
在群集上進(jìn)行脫機(jī)維護(hù), 以及在管理員希望臨時(shí)禁用自動(dòng)添加副本的各種其他用例中, 以下 api 將禁用和重新啟用群集中所有集合的 autoAddReplicas:
通過(guò)將群集屬性 autoAddReplicas 設(shè)置為 false, 禁用自動(dòng)添加副本群集的功能:
在群集上進(jìn)行脫機(jī)維護(hù)時(shí),以及在管理員想暫時(shí)禁用自動(dòng)添加副本的各種其他用例中,以下API將禁用并重新啟用群集中所有集合的 autoAddReplicas :
通過(guò)將群集屬性autoAddReplicas設(shè)置為false,禁用自動(dòng)添加副本群集的功能:
http://localhost:8983/solr/admin/collections?action=CLUSTERPROP&name=autoAddReplicas&val=false
通過(guò)取消 autoAddReplicas 群集屬性 (如果未提供 val 參數(shù),則不設(shè)置群集屬性),重新啟用自動(dòng)添加副本 (對(duì)于那些用 autoAddReplica = true 創(chuàng)建的集合):
http://localhost:8983/solr/admin/collections?action=CLUSTERPROP&name=autoAddReplicas
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: