2011-07-26 35 views
9

我想使用sstableloader將數據加載到現有的Cassandra環中,但無法弄清楚如何實際使其工作。我試圖在一臺運行有cassandra節點的機器上運行它,但是當我運行它時,出現一個錯誤消息,說7000端口已經在使用,這是運行中的Cassandra節點用於八卦的端口。你如何使用Cassandra工具sstableloader?

那麼這是否意味着我只能在與目標cassandra環相同的網絡上使用sstableloader,但實際上並未運行cassandra節點?

任何細節將是有用的,謝謝。

+0

正如您在答案(和教程)中指出的那樣,您可以位於同一個節點上,您只需提供備用IP地址即可。但是,有一種更簡單的方法;您可以使用JMX-> StorageService-> bulkload()調用。非常適合測試和偶爾使用。 – libjack

回答

6

使用sstableloader,閱讀源代碼,並最終找出如何在承載正在運行的cassandra節點的同一臺機器上運行sstableloader。有兩個關鍵點來實現它的運行。首先,您需要爲sstableloader創建cassandra安裝文件夾的副本。這是因爲sstableloader讀取yaml文件以找出哪些ipaddress用於八卦,而現有的yaml文件正在被Cassandra使用。第二點是你需要在你的機器上創建一個新的環回ipaddress(類似於127.0.0.2)。完成此操作後,將複製的Cassandra安裝文件夾中的yaml文件更改爲偵聽此IP地址。

我寫的教程會更詳細講述如何做到這一點的位置:http://geekswithblogs.net/johnsPerfBlog/archive/2011/07/26/how-to-use-cassandrs-sstableloader.aspx

+0

好教程@Turbo。 – libjack

+0

@Turbo斷開的鏈接。在這裏添加其他缺失的位? – Kasisnu

+3

@Turbo斷開鏈接:( –

0

我已經使用所提供的sstableloader工具卡桑德拉-0.8.4到sstables成功加載到cassandra.From一些我所面臨的問題,我有以下建議

  1. 如果您正在運行SINGL它您必須創建一個複製cassandra安裝文件夾,並且必須從此文件夾運行sstable-loader。同時更改監聽地址,rpc地址還提供運行cassandra的ip地址作爲此cassandra.yaml文件中的種子拷貝one.Check兩個cassandra.yaml文件中的集羣名稱是否相同。

  2. 這些sstables必須在一個目錄,其名稱是密鑰空間

  3. 的名稱它需要包含在類路徑一個cassandra.yaml配置文件的目錄。

  4. 注意,架構要加載應事先

定義僅供參考,請參閱列族:Using Cassandra SStableloader

+0

sstableloader是否加載只是部分數據?我的cluster1有3個節點,cluster2有3個節點,我需要將數據從cluster1複製到cluster2。是否必須在每個cluster1節點上運行sstableloader,或者sstableloader是否從其他主機獲取表的所有部分我? – Sergey

0

如果您要在Java中執行此操作,請參見下面的實用程序類別:

BulkWriterLoader

List<String> argList = new ArrayList<>(); 
    argList.add("-v"); 
    argList.add("-d"); 
    argList.add(params.hosts); 
    argList.add("-f"); 
    argList.add(params.cassYaml); 
    argList.add(params.fullpath); 
    LoaderOptions options = LoaderOptions.builder() 
      .parseArgs(argList.stream().toArray(String[]::new)) 
      .build(); 
    try 
    { 
     BulkLoader.load(options); 
    } 
    catch (BulkLoadException e) 
    { 
     e.printStackTrace(); 
    } 
    ... 

的代碼也將產生使用CQLSSTableWriter類的SSTable文件。

相關問題