【问题标题】:Cassandra vs HDFS Compression ratioCassandra 与 HDFS 压缩比
【发布时间】:2018-01-11 22:59:59
【问题描述】:

我在单机上使用相同的输入数据对 HDFS 和 Cassandra 的存储量进行了评估。 HDFS 和 Cassandra 都只有 1 个副本。 我的输入数据是二进制字节,总共31M。原来是 HDFS 的数据比 Cassandra 少。

  1. HDFS : 16.4 M.(使用 COMPRESS.BLOCK 策略)(

  2. 卡桑德拉:50M。 (使用 CQL 接口,默认设置(例如压缩))

    这怎么可能,因为 Cassandra 使用列式存储?

    有人可以帮我解决吗?非常感谢。

    我的 Cassandra 版本是 2.1.9。

【问题讨论】:

  • 这是我输入数据的架构:10 个字段为长类型,2 个字段为字符串类型。和 Cassandra CQL 一样,bigint 有 9 个字段,text 有 2 个字段,timestamp 有 1 个字段

标签: cassandra compression hdfs


【解决方案1】:

如果使用 3.+,您将看到更好的 C* 磁盘使用率。它是 2.1 的东西,需要列名和每个字段,所以如果你有 10 个字段,情况会更糟。 3.x 好很多,因为它不存储冗余数据。

HDFS 和 C* 是解决不同类型问题的两个完全不同的东西。如果您只是在寻找最有效的磁盘空间使用,那么 hdfs 可能就是您想要的,因为它可以更有效地存储大量二进制数据。如果您正在寻找更快的读/写速度,C* 可能 是一个更好的选择。 C* 添加到您的数据中以组织和提高查询效率,并提供有关数据的保证(以保持一致性)。压缩会获得一些回报,但在很多情况下,它会占用比原始数据更多的空间。

【讨论】:

  • 感谢您的帮助。我在 Cassandra 读/写速率方面遇到了一些问题。如果我使用 C* 3.+,可能会提高速率。但是,您认为在上述情况下,C* 2.1 的写入速率低于 1M/s(约 3k 次插入/秒)是否正常?我使用datastax java驱动程序。而且我确信所有数据都保留在 Memtable 中,而不是刷新到 SSTable 中。另外,commitlog 同步处于“周期”模式,我将周期设置为比插入所需的时间长。
  • 关于读取速度,我发现更多的处理器/线程不会加快读取速度,它的成本与单个处理器所需的时间相同。在我的例子中,如果数据被缓存,读取速率可以达到 180M/s。但是当数据没有被缓存时,它会下降到大约 18M/s。我使用 HDD 和 C* 2.1。你能给我一些建议吗?非常感谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
相关资源
最近更新 更多