在分布式环境中,每天存储50 of的日志有问题。我看过Hadoop,但是由于它在Windows基础设施上运行有问题,缺少多语言的文件系统API,所以不太适合我。另一方面,卡桑德拉在任何平台上都很容易部署。我面临的唯一大问题是磁盘空间的使用。以下是数字:
因此,在从日志文件存储日志行时,我的开销几乎是2倍。
是否有可能以某种方式对Cassandra进行调优,这样它就不会在非常简单的情况下占用这么多磁盘空间?
发布于 2010-06-28 20:38:42
我猜你指的是列家族中的一行(四列)?与每个列相关联的“开销”是一个长的(时间戳,64位)和一个字节列名,最大64 kb。因此,4倍的磁盘使用似乎有点奇怪。你有做任何删除吗?一定要理解如何在分布式的、最终一致的系统中删除。
一定要阅读关于"压实“的文章。(“压缩完成后,可以删除旧的SSTable文件”)
我还想提醒您,对于流是如何完成的,存在着一个限制。
Cassandra的公共API是基于Thrift的,它不提供流媒体功能--任何写入或获取的值都必须保存在内存中。这是特留瓦的设计固有的,因此不太可能改变。因此,向Cassandra添加大型对象支持需要一个特殊的API,该API可以手动将大型对象分割成碎片。在http://issues.apache.org/jira/browse/CASSANDRA-265中描述了一种潜在的方法。作为一种解决办法,您可以手动将文件分割成任意大小的块--至少有一个人正在使用64 to -并使一个文件对应于一行,并将这些块作为列值。(来自wiki上的“Cassandra限制”页面)
https://stackoverflow.com/questions/3135228
复制相似问题