如果SolrCloud中某個碎片的節點物理空間已滿,會發生什麼情況?請求索引到這些節點或該分片將重定向到其他有空間的碎片?Solr節點在碎片中的物理空間利用率
回答
簡短的回答是不容易,而不是自動,因爲一個特定的分片已滿。原因是32位散列範圍在每個碎片之間平均分配,Solr使用雜音散列算法,該算法可以使每個碎片中的文檔數保持平衡(大致),因此大多數節點幾乎都會開始遇到相同的限制同時,所以您需要監視您的索引併爲其提前或之後進行計劃。在此上下文中有兩個選項首先,自定義散列允許您根據某個常用字段值(例如租戶ID)將文檔路由到特定的分片。另一個例子是基於類別路由文檔。使用自定義散列時最大的擔憂是它可能會在您的羣集中創建不平衡的碎片。第二個選項是碎片拆分,允許您將現有碎片拆分爲兩個子碎片。要執行分片分割,請使用集合API的SPLITSHARD操作將現有分片分割爲兩個子分支。分割過程完成後發出「硬」提交以使新的子頻道處於活動狀態。從集羣中卸載原始分片。
但是,如果您仍然選擇強制文檔到特定分片,因爲您知道其他分片已滿,您可以這樣做:Solr 4.5增加了使用router.name參數指定路由器實現的功能。如果使用「compositeId」路由器,則可以在文檔ID中使用前綴發送文檔,該文檔ID將用於計算散列Solr用於確定文檔發送到索引的分片。前綴可以是任何你想要的(例如,它不一定是碎片名稱),但它必須一致,以便Solr的行爲一致。例如,如果您想爲客戶共同定位文檔,則可以使用客戶名稱或ID作爲前綴。例如,如果您的客戶是「IBM」,並帶有ID爲「12345」的文檔,則應在文檔ID字段中插入前綴:「IBM!12345」。感嘆號('!')在這裏非常關鍵,因爲它定義了將文檔引導到的分片。
您可以在這裏閱讀更多關於它的信息:https://cwiki.apache.org/confluence/display/solr/Shards+and+Indexing+Data+in+SolrCloud
- 1. Solr中的碎片數量
- 2. Solr的雲:跨節點碎片的分佈
- 3. solr實例有碎片且沒有碎片的響應時間
- 4. 如何決定每個節點的Solr雲碎片?
- 5. Solr碎片配置
- 6. 在Netty中處理碎片
- 7. hadoop中hdfs將如何利用數據節點中塊的空閒空間?
- 8. 節點和碎片數據結構
- 9. 如何在solr雲中拆分solr碎片
- 10. Solr MoreLikeThis不適用於多個碎片?
- 11. 從SOLR數據庫中刪除碎片
- 12. 在MongoDB的地理空間和節點中使用URL參數
- 13. Eden空間和舊空間利用率100%
- 14. APC清除率和碎片
- 15. 清理碎片
- 16. 在一個節點中未分配的碎片
- 17. 在android中使用碎片處理EditText
- 18. Oracle:如何查找表空間碎片?
- 19. 虛擬地址空間碎片
- 20. 關於Solr Core碎片的信息
- 21. 如何減少世界地圖的空白空間利用率
- 22. 節點應用程序的高CPU利用率應用程序
- 23. 如何處理MongoDB主碎片耗盡空間?
- 24. 如何處理C#內存分配(地址空間碎片)
- 25. arangodb中按集合的奇怪磁盤空間利用率
- 26. scapy:UDP碎片整理時間戳問題
- 27. 處理器利用率
- 28. Forms.TreeView中節點之間的空間
- 29. Treeview中節點之間的空間wpf
- 30. 如何合併PowerShell腳本以在一個csv文件中獲取磁盤已用空間,磁盤空閒空間,cpu利用率和內存利用率?
感謝Arun的回覆。 – buddy86
我基本上是在尋找Solr中的任何自動路由。如果它不在那裏,那麼只剩下兩個選項。一種是使用SPLITSHARD並增加SolrCloud空間。另一個是使用「自定義分片」並將數據路由到其他分片。目前我正在使用solr-4.2.1。在solr-4.5.0中,所有的收集API都無法正常工作。他們在solr-4.6.0中工作,這是Solr的最新版本。 – buddy86