2015-01-21 49 views
0

我有一個只使用一個節點的Cassandra集羣(因爲我只有一臺服務器並進行比較)。所以我得到了一個43 GB的時間序列表,我運行的每個查詢都非常緩慢。我的問題是,爲什麼只有一個節點的羣集中的一個節點具有43GB的空間,而在具有更多節點的羣集中的一個節點中的43GB會是多少呢?Cassandra只有一個服務器

即使查詢只需要一個節點,Cassandra是否使用羣集中每個服務器的RAM和CPU?這是我的想法,但我不知道......

我希望有人能夠幫助這裏,

謝謝!

編輯:我的表:

CREATE TABLE table(
    num int, 
    part_key int, 
    val1 int, val2 float, val3 text, ..., 
    PRIMARY KEY((part_key), num) 
); 

num是記錄的編號。有300-400個值和10 000 000個記錄。現在數據庫是ca. 60GB(從昨天起爲43GB),甚至INSERT查詢超時。如果我設置超時服務器服務崩潰。

+0

我想我在一個集羣中裝載了這麼多,但它不是生產的東西,更多的是一個內部工具。這真的取決於你的計劃和查詢。你可以添加它們嗎? – 2015-01-21 08:02:24

+2

可能重複的[Cassandra數據庫不堪重負?](http://stackoverflow.com/questions/28024187/cassandra-database-overwhelmed) – RussS 2015-01-21 16:40:50

+0

@Friedrich請避免兩次發佈相同的問題!如果您擔心曝光,還有其他方式可以增加您發佈的問題的曝光度,例如:添加更多相關標籤(例如C *版本),使用更多相關信息更新您的問題等。 – alfasin 2015-01-21 18:03:51

回答

1

爲什麼43GB到多的集羣中的一個節點只有一個節點

43GB不多於C *集羣的一個節點(即使集羣僅包含一個節點)。舉個例子,我們在Netflix中擁有包含800GB(每個節點)或甚至更多節點的羣集!

還有一個原因是你的查詢速度慢,而且有一個猜測是你有一個(或更多)非常大的行,這是Cassandra的致命弱點。你應該檢查的另一件事是你正在使用的讀/寫模式:因爲C *最終是一致的,所以如果你嘗試執行:read-modify-read - 你會得到糟糕的結果。

此外,您應該確保C* heap size is tuned符合您的應用要求。

另一種選擇是,您正在運行到以下performance issue(他也在SO中發佈了this question,這很好地利用您的時間來閱讀答案)。

可能有其他選擇,但爲了進一步挖掘你應該提供關於你正在做的更多細節:C *版本,CF結構,你怎麼插入(代碼)等

當查詢只需要一個節點時,Cassandra是否使用集羣中每個服務器的RAM和CPU,即使是 ?

CPU和RAM不在羣集中共享。假設執行查詢所需的所有數據都存在於一個節點上,則查詢將通過(至多)兩個節點:協調器(接收查詢的節點),該節點將一次轉發到保存的節點數據。如果您將使用令牌感知策略,則您的查詢將直接進入保存數據的節點。你可以在datastax文檔中閱讀更多關於它的信息。

+0

我真的有大排......卡桑德拉怎麼會有這個問題?測試時,我只執行讀取查詢。在做完這些查詢後,我再次閱讀以準備下一次測試的表格。我想這應該不成問題。我想聽聽你對第一個問題的回答。 – Friedrich 2015-01-21 08:33:24

+0

CPU和RAM不在羣集中共享。查看我的答案更新。 – alfasin 2015-01-21 08:48:16

+0

好的,這回答我的問題RAM和CPU。我會把這篇文章閱讀到令牌感知策略,但我只有一個節點。協調節點和保存數據的節點不是相同的嗎?第一個問題,我的意思是爲什麼大行是一個問題。你能回答嗎?感謝您的幫助! – Friedrich 2015-01-21 08:59:59

相關問題