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