2011-12-24 66 views
1

剛剛開始在Solandra,並試圖瞭解Solandra分片的第二個 關卡詳情。Solandra Sharding:內幕思考

AFAIK Soalndra創建配置碎片的數目( 「solandra.shards.at.once」屬性),其中每個分片是高達 「solandra.maximum.docs.per.shard」大小。

在下一水平啓動其通過 「solandra.maximum.docs.per.shard」 /「solandra.index.id.reserve.size」定義每個碎片內 創建時隙。

我從SchemaInfo CF,一個 特定碎片裏面有不同的物理節點擁有的插槽和 這些是一個種族的節點來獲得這些插槽之間發生的數據模型理解了。

我的問題是:

  1. 如果我請求特定的Solr節點 例如在寫這是否意味着。 ....solandra/abc/dataimport?command=full-import是否請求 分配給所有可能的節點等。這是分佈式寫入? 因爲在這種情況下,其他節點將如何在特定分片中競爭 插槽。理想情況下,編寫文檔或文檔集的代碼將在單個物理JVM上執行。

  2. 通過分片,我們試圖寫一個物理節點 上的一些文檔,但如果它是基於由不同 物理節點擁有的插槽,會有怎樣的結果實際上達到在寫作中,我們還需 擷取結果來自不同的節點。我知道寫入 吞吐量是最大化的。

  3. 我們可以看看調整這些數字嗎? 「solandra.maximum.docs.per.shard」, 「solandra.index.id.reserve.size","solandra.shards.at.once」。

  4. 如果我有一個DC 6節點設置只有一個碎片和複製因子爲5,我看到這個碎片的端點含有5個 端點按複製Factor.But會發生什麼到第6 一。我通過nodetool看到左邊的第6個節點並沒有真正獲得任何數據。如果我在保持 羣集開啓的情況下將複製因子增加到6,這是否可以解決問題並進行修復等,或者有更好的方法。

回答

0

總的來說,shards.at.once參數用於控制索引的並行性。數量越多,一次寫入的碎片就越多。如果將其設置爲1,則您將始終只寫入一個碎片。通常這應該設置爲羣集中節點的數量的20%。所以對於一個四節點集羣將其設置爲五。

儲備規模越大,需要的節點之間的協調越少。所以如果你知道你有很多文件要寫,那就提出這個問題。

docs.per.shard越高,給定分片的查詢就越慢。一般來說,這應該是1-5M最大。

要回答你兩點:

  1. 這隻會從一個節點導入。但是它會立即根據碎片索引多個索引。

  2. 我認爲問題是你應該寫跨所有節點?是。

  3. 是的,見上文。

  4. 如果增加shards.at.once這將是快速填充

+0

感謝傑克。現在我在Solnadra也很漂亮,我還有另一個給你:http://stackoverflow.com/questions/8962953/heap-size-of-a-node-in-solandra-cluster – Robby 2012-01-22 17:31:52

+0

傑克在目前的設置我有300K文檔和碎片一次爲1,最大文檔再次默認爲〜1m。我有7個節點集羣,所以現在如果我需要通過cassandra集羣分發數據,我需要將RF降低到3我還需要減小max_doc大小,理想情況下,如果總文檔是 Robby 2012-02-06 11:37:56