2016-08-04 61 views
2

我正在計劃生產中的Cassandra集羣部署。 我將基本上將我的東西從mongo遷移到cassandra。規劃Cassandra部署和配置存儲

總數據面將約爲5TB(沒有複製和壓縮)。

  • 我正在決定調整參數。我很困惑 在yaml中設置目錄大小。
  • 多少大小應給予saved_caches_directory和 commitlog_directory。我無法找到關於它的很多信息。
  • 我應該考慮多少個節點考慮每秒10k的組合讀取請求 。
  • 應該給數據目錄多少磁盤。我已經讀過 不應該太高?
  • 如何清理commitlog目錄。它是自動還是手動?

============================================ ============================

  • m3.2xlarge(8核心30Gig RAM之間決定沒有ephimeral只有SSD EBS)和i2.2xlarge(8核心60千兆每2 ephimeral SSD硬盤800 G)的機器

我也有圍繞如何在RAM分割我的C *的內部問題。 8GB是堆。 RAM的其餘部分應該放在哪裏?所有緩存設置都是堆的一部分?在那裏用來利用此內存

+0

這是5個問題不是一個。可以說,*沒有*是編程問題。 – Raedwald

+0

是否有任何操作相關版本的stackoverflow? @Raedwald – Peter

+0

是的,有:Stack Exchange的數據庫管理員論壇 – ARA

回答

0

嗯,這是一個很大的問題,任何其他CONFIGS,但這裏是我採取它。

我建議使用默認值的大小來啓動,而只能看着,如果你遇到一個問題,修改參數。默認值通常會做你所需要的。

提交日誌文件被再次使用,因此存儲空間通常不是一個問題。看看我的一個節點,它只使用200 MB的提交日誌。您不需要手動清除它們或擔心它,因爲它是自動維護的。

保存緩存的大小可能會有所應用相關的,但我認爲大小通常會在磁盤上較小,因爲這些文件旨在被加載到內存中重新啓動。

上漿節點的數量,我建議通過模擬讀原型您的應用程序,寫你所期望的圖案,並用現實的尺寸插入什麼和閱讀。性能將受到您如何編寫客戶端應用程序的很大影響,這取決於您的架構,複製因素,數據壓縮程度等。

因此,您將基準您的原型應用程序在少量測試節點並找出它可以處理的峯值持續的交易率。然後,在添加更多節點時,您會發現事務率會有相當大的線性增長,並且您可以預測您的生產羣需要多大。我建議有足夠的節點來處理至少兩倍的預期事務速率,以便您有能力處理諸如維修,增加新節點,壓縮等功能。

當進行基準測試時,一定要運行測試儘可能長(幾天,如果可能的話),並且擁有你期望存儲在集羣上的全部數據量,因爲只有這樣你才能真正瞭解它如何處理壓縮和修復那麼多數據。基準測試的一種不正確的方法是運行測試10分鐘,觀察一個很棒的事務處理速度,因爲一切都在寫入內存,然後錯誤地得出結論說系統可以維持這樣的速度。

擁有大量的內存是很好的一點。 Cassandra默認會爲堆分配四分之一的RAM,最大值爲8 GB。因此,除了32 GB的RAM之外,你可能沒有得到很大的回報。 SSD是一個好主意,但我經常發現CPU功耗可能更多是一個限制因素。在高事務處理速率下,您將看到所有內核工作非常困難。

提高性能的最佳方法是減少每個節點的數據負載。我看到建議要保持每個節點1 TB以下的數據,但越小越好。您還必須考慮到很多額外的空間,因爲壓縮和修復等操作會生成大量的臨時文件。另外,如果您使用TTL刪除舊數據,則必須知道過期數據不會立即在磁盤上釋放,而只會在壓縮過程中釋放。除非您不斷插入新數據,否則很少會觸發壓縮。對於一些壓縮策略來說,最大的SSTable壓縮的次數最少,因此可能包含大量過期的數據,這些數據會佔用大量的磁盤空間。