2011-11-24 64 views
1

我已經使用Whirr在EC2上設置了一個3節點的Cassandra集羣。我還有第四個EC2實例,我正在用它來編寫example from DataStax之後的sstables。你如何使用sstableloader填充Cassandra集羣?

一旦sstables寫我試圖加載卡桑德拉集羣,但是我不斷收到:

Starting client (and waiting 30 seconds for gossip) ... 
java.lang.IllegalStateException: Cannot load any sstable, no live member found in the cluster 

我已經配置在sstableloader cassandra.yaml種子是集羣中的一個節點,並打開up羣集中的種子節點和sstableloader實例之間的端口。我能夠使用sstableloader實例中的cassandra-cli訪問種子節點,所以我認爲所有的配置都是正確的。

還有什麼我失蹤? sstableloader是否必須在其中一個羣集節點上運行,以便閒聊能夠正常工作?

回答

0

你在節點之間打開了哪些端口?閒話時需要7000端口(默認情況下)。

+0

7000和9160(TCP) 這兩個實例上yaml中指定的存儲和rpc端口。 –

+0

我最好的選擇就是不使用你認爲它的conf文件。你是否在某個時候從軟件包安裝了cassandra,現在正在從下載中運行?在查找本地目錄之前,sstableloader腳本會查找/ etc/cassandra和/ usr/share/cassandra等地方。您可以通過將'CASSANDRA_HOME'設置爲包含要使用的conf/dir的目錄來覆蓋此行爲。 – nickmbailey

+0

這絕對是使用正確的配置文件。關於[此示例](http://geekswithblogs.net/johnsPerfBlog/archive/2011/07/26/how-to-use-cassandrs-sstableloader.aspx)我能夠將sstableloader連接到第二個運行在cassandra上的實例同一個盒子,通過設置一個環回地址。我可以看到cassandra實例的日誌,並看到stabbleloader連接並開始加載。儘管如此仍然無法連接到遠程羣集。 –