Cassandra
cassandra 設置 - 負載不均勻 - 我做錯了什麼?
為了便於理解,我使用 Cassandra 的最新/最大(已發布)版本設置了一個 4 節點集群。這四個節點是使用幾乎完全預設的設置按順序啟動的,並且似乎可以正常通信。
然後我創建了一個模式,如下所示:
CREATE KEYSPACE first WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '1' };
創建一個包含 5 列的簡單表並添加約 100K 行數據。一切都很好。每個客戶都可以獲得數據,所以我認為它是均勻分佈的。
所以我正在研究一種備份策略並開始處理快照等問題。在每台機器上執行後
nodetool snapshot
,我想知道它創建了什麼。我轉到第一台機器並查看**/var/lib/cassandra/data/first**,發現它是空的。嗯..第二台機器..同樣的事情..第三台..最後在第四台機器上,我看到數據文件夾和快照目錄中的文件。執行
nodetool ring
顯示每個系統大約擁有25%,但**負載嚴重偏向(似乎)最終擁有所有數據的一個系統。所有數據真的都在這台機器上嗎?我在配置中錯過了哪一步?
Cassandra 將令牌範圍分配給集群中的每個節點。
由於您的配置中有 4 個節點,因此將 25% 的令牌分配給每個節點。
每個插入查詢都會為該行數據生成一個雜湊。雜湊將始終屬於一個且僅屬於一個令牌範圍,因此該行數據儲存在該特定物理節點中。
在您的情況下,大多數插入查詢具有相同或相似的分區鍵,導致相同的物理節點,即節點 4。
有關更多詳細資訊,請觀看解釋分區的 datastax 網站。