我想知道如何將數據從一個cassandra集羣遷移到另一個不同大小的cassandra集羣。 。從5節點羣集到7節點羣集。如何從大小爲N的Cassandra集羣遷移數據到不同大小的集羣N +/- M
我開始看着sstable2json,因爲它爲該特定cassandra節點上的SSTable創建了一個json文件。我的想法是爲環上每個節點上的一個列族進行此操作。因此,在5節點環上,這會給我5個json文件,其中一個文件存儲在駐留在每個節點上的列族中。
然後,我會將json文件合併到一個文件中,然後使用json2sstable導入到一個新的大小的集羣中,讓我們說7個。我希望cassandra能夠在整個節點上平均複製/平衡數據在環,但我剛剛讀到,一旦寫入SSTables是不可變的。所以,如果我按照剛剛提到的方法做了,我最終會在一個節點上結合我的列族中的所有數據。
那麼任何人都可以幫助我找出將數據從一個集羣遷移到另一個不同環大小的集羣的過程嗎?
如果我直接寫入sstable,cassandra會將數據複製到其他節點上嗎?另外,如果我將來自環中所有節點的所有數據文件放到一個文件夾中,並在其上運行sstableloader,那麼不會因爲數據在原始集羣中的3個節點上覆制而導致重複數據? – Turbo
是的,你會得到重複的數據。壓實會照顧到這一點,所以這不是問題。另外:不需要「將所有數據文件放到一個文件夾中」,只需在原地進行即可。 (編輯澄清。) – jbellis
嘿jbellis,感謝您的信息。我認爲這是要走的路線。爲了添加更多關於我的場景的信息,我在ec2上使用hadoop來生成數據模型,並將其保存在cassandra上,也是在ec2上。然後當模型建立時,我會將cassandra數據拉到我的網絡。我將在ec2上創建一個相當大的cassandra環,以在生成模型時獲得一些可伸縮性的好處。但是我的網絡中的目標環將會變小,可能減半。所以我的計劃是將數據文件從ec2下拉到我的網絡,然後導入數據。更多下一條評論... – Turbo