Cassandra

cassandra 設置 - 負載不均勻 - 我做錯了什麼?

  • January 26, 2015

為了便於理解,我使用 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 網站。

引用自:https://serverfault.com/questions/643525