2010-06-28 51 views
1

我有一個問題,每天在分佈式環境中存儲50Gb的日誌。我查看了Hadoop HDFS,但由於它在Windows基礎結構上運行時出現問題,缺乏多語言文件系統API,所以它不適合我。另一方面,卡桑德拉非常容易在任何平臺上部署。我面臨的唯一的大問題是磁盤空間的使用。下面是數字:Cassandra是否足夠適用於根據磁盤空間使用情況存儲日誌?

  • 原始日誌文件的大小爲224MB
  • Cassandra的數據文件是557Mb
  • 卡桑德拉索引文件了109M

所以我存儲從日誌行的時候得到了幾乎2倍的開銷日誌文件。

是否有可能以某種方式調整Cassandra,因此它不會爲非常簡單的場景吃掉太多的磁盤空間?

+0

mamu,please read http://stackoverflow.com/questions/2359175/cassandra-file-structure-how-are-the-files-used/2359282#2359282 – Schildmeijer 2010-06-28 21:04:44

回答

3

我想你的意思是你的專欄裏有一行(有四列)?與每列關聯的「開銷」是一個很長的(時間戳,64位)和一個字節[](列名,最大64 kb)。所以4倍的磁盤使用似乎有點奇怪。你在做刪除嗎?一定要了解how deletes are done in a distributed, eventually consistent system

請務必閱讀「compactions」。 (「壓縮完成後,舊的SSTable文件可能會被刪除」)

還想提醒您關於如何完成流式傳輸的Thrift限制。

Cassandra的公共API基於Thrift,它不提供流式功能 - 任何寫入或讀取的值都必須適合內存。這是Thrift設計所固有的,因此不太可能改變。因此,向Cassandra添加大型對象支持需要一個特殊的API,可以手動將大型對象分割成幾部分。在http://issues.apache.org/jira/browse/CASSANDRA-265中描述了潛在的方法。作爲一種解決方法,您可以手動將文件拆分爲任意大小的塊(至少有一個人使用64MB),並使文件對應一行,並將塊作爲列值。 (來自wiki上的'Cassandra Limitations'頁面)

+0

Schildmeijer,實際上當我提交我的問題時,我錯誤地使用了Cassandra磁盤空間(你是對的,我沒有運行壓縮)。因此,這裏有真實的數字(我還更新了原來的問題): - 原始日誌文件的大小爲224MB - Cassandra的數據文件是557Mb - 卡桑德拉索引文件了109M 我沒有做任何刪除。我將每條日誌行分別放入Cassandra,最長的行大約1kb。 仍然2倍的開銷是有點大我的目的存儲多頭 - 有沒有什麼辦法來優化呢? 謝謝! – sha1dy 2010-06-29 07:55:15

相關問題