2016-03-02 44 views
1

我們有一個運行2.0.17的18節點C *集羣(每個節點大約600 GB數據)。我們通過增加了18個節點來擴展它,因此我們需要做一次nodetool清理,以擺脫舊節點不再擁有的任何冗餘數據(即,已經從舊節點移動到羣集中新節點的數據) 。但是,後來我們還需要將C *版本升級到2.1.13版本,因爲這是主要的版本升級,我們需要在表格上運行升級穩定版以使其與2.1格式兼容。 所以我想知道upgradestables是如何工作的。它會讀取整個數據,然後以新格式重新寫入,還是不那麼廣泛。如果它將重寫整個事情,那麼它是否有可能會擺脫該節點不再擁有的任何外部數據?如果是這種情況,那麼我們不必首先運行nodetool清理,並且可以升級到2.1.13並運行升級穩定器,它將爲我們完成所有工作。否則,我們將不得不在升級到2.1.13之前運行nodetool清理。由於每個節點上的大量數據,如果可能的話,我不想遍歷整個數據集兩次。Cassandra upgradeSSTable - 是否讀取和寫入整個數據?

回答

1

它會讀取並重寫整個sstable(僅當需要時)。基本上它是一個單穩態壓實。寫新的sstable作爲閱讀它,一旦完成刪除原件。

+0

我的主要問題是,這是否意味着它將擺脫任何外國數據以及它不再擁有? – dwivedialok

+0

你需要做一個清理,正常的壓縮(升級表基本上)將不會刪除它不擁有的東西,所以你將需要兩者。您不能僅執行清理,因爲清理操作將跳過不包含節點範圍外的數據的sstable。 –

+0

好的。感謝您的澄清! – dwivedialok