我知道過類似的問題,但我認爲我的用例非常具體,我找不到任何答案。Cassandra數據從1.2遷移到3.0.2
在生產中,我們使用Cassandra 1.2和ByteOrderPartitioner在6節點集羣中以Priam作爲種子管理工具。我們最近升級了所有依賴關係,並試圖使用Murmur分區器遷移到Cassandra 3.0.2,爲了實現向後兼容性,我們需要啓用節點集羣。同時我們也希望從Priam遷移出來。 我能夠設置新的羣集,但在數據遷移過程中遇到很多問題。我試過3兩件事:
1)使用拷貝命令:失敗時的行數較大
2)SSTable2Json:卡桑德拉3.0.2已停止支持SSTable2Json
3)SSTableloader:失敗我想是因爲源和目標
了java.lang.RuntimeException的不同版本卡桑德拉:在org.apache.cassandra.tools.BulkLoader $ ExternalClient.init(BulkLoader.java:233) 在組織 :無法檢索端點範圍。 apache.cassandra.io.sstable.SSTableLoader.stream( SSTableLoader.java:119) at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:67) 引起:InvalidRequestException(原因:未配置的表schema_columnfamilies) at org.apache.cassandra.thrift.Cassandra $ (org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra $ Client.recv_execute_cql3_query(Cassandra.java:1562)org.apache.thrift.TServiceClient.receiveBase(Cassandra.java:1578) at org.apache.cassandra.thrift.Cassandra $ Client.execute_cql3_query(Cassandra.java:1547) at org.apache.cassandra.tools.BulkLoader $ ExternalClient.init(BulkLoader.java:225) ... 2 more
Righ現在我有點卡住了,對此的任何幫助將深受讚賞。如果您需要更多詳細信息,請告訴我。
感謝Jaya,我仍在探索兩種選擇: 1)使用CQLSSTableWriter 2)在新集羣中創建模式,編寫將一組數據直接複製到另一個集羣的Java代碼。由於數據並不龐大(大約100GB),我更傾向於第二種選擇,因爲我已經熟悉在cassandra中寫入數據的代碼。對此有任何想法。 –
以我的觀點來看,第二種方法比第一種方法需要更多的時間。另一個預防措施是使用重試邏輯進行寫入過程。因爲如果有任何寫入失敗,出現任何異常,那麼您需要從第一個寫入過程開始。 –
對於第二個選項,還有一點是,我不確定cassandra是否會處理100GB的所有數據。由於以100GB的速度寫入,可能會帶來麻煩。從cassandra文檔中,它必須處理所有100GB數據,而不會失敗。還沒有嘗試過,但幾乎你正在給cassandra做壓力測試。但是如果你選擇第一種選擇,你就不會陷入任何陷阱。如果可能的話,一旦完成就取回結果,這對未來可能有所幫助。 –