【问题标题】:Cassandra. Bloom filter size is > 16GB, reduce the bloom_filter_fp_chance卡桑德拉。布隆过滤器大小> 16GB,减少bloom_filter_fp_chance
【发布时间】:2016-05-09 13:12:43
【问题描述】:

将数据恢复到 Cassandra 集群(1 个节点)后出现错误:

ERROR [CompactionExecutor:7] 2016-05-09 08:05:38,621 CassandraDaemon.java:185 - Exception in thread Thread[CompactionExecutor:7,1,main]
java.lang.UnsupportedOperationException: Bloom filter size is > 16GB, reduce the bloom_filter_fp_chance
        at org.apache.cassandra.utils.obs.OffHeapBitSet.<init>(OffHeapBitSet.java:40) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.utils.FilterFactory.createFilter(FilterFactory.java:85) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.utils.FilterFactory.getFilter(FilterFactory.java:78) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.io.sstable.format.big.BigTableWriter$IndexWriter.<init>(BigTableWriter.java:470) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.io.sstable.format.big.BigTableWriter.<init>(BigTableWriter.java:86) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.io.sstable.format.big.BigFormat$WriterFactory.open(BigFormat.java:107) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.io.sstable.format.SSTableWriter.create(SSTableWriter.java:84) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.writers.DefaultCompactionWriter.<init>(DefaultCompactionWriter.java:52) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.CompactionTask.getCompactionAwareWriter(CompactionTask.java:237) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.CompactionTask.runMayThrow(CompactionTask.java:174) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:74) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:59) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionCandidate.run(CompactionManager.java:256) ~[apache-cassandra-2.2.5.jar:2.2.5]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_71]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_71]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_71]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_71]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_71]

任何想法,如何解决?

sstable(db 文件)的平均大小为 524MB。 最大限度。大小为167G

Bloom filter false positives: 0
Bloom filter false ratio: 0.00000
Bloom filter space used: 8409389240
Bloom filter off heap memory used: 59948996312

【问题讨论】:

    标签: cassandra bloom-filter


    【解决方案1】:

    布隆过滤器误报率与空间的近似公式为:

    m = n * ln(1/fpc)/ln(2)²

    m = 大小(以字节为单位) n = 不同分区键的数量 fpc = 布隆过滤器误报机会

    请参阅 http://www.slideshare.net/doanduyhai/cassandra-data-structures-and-algorithms/57 了解数学详情

    要拥有一个 16Gb 大小的布隆过滤器,您可能在单个 SSTable(并且可能非常大的 SSTable)中有很多分区。

    请问:

    1. 提供 SSTables 的平均和最大大小?
    2. 给表上配置的导致问题的布隆过滤器 fp 机会(使用 nodetool cfstatsnodetool tablestats

    【讨论】:

    • 感谢您的回答。我已经添加了信息。
    • 我没有bloom_filter_fp_chance,你能用cqlsh中的DESCRIBE TABLE xxx把它放在桌子上吗?
    • bloom_filter_fp_chance = 0.01
    • 看起来你在大 SSTable 中有 1.79*10^9 个分区(使用上面的数学公式)。一个建议是将布隆过滤器 fp 机会增加到 0.1。这会将布隆过滤器的大小减少 2 倍,例如≈ 8Gb
    • 谢谢!没有出现错误。
    猜你喜欢
    • 2021-10-27
    • 2015-03-18
    • 1970-01-01
    • 2017-10-18
    • 2015-10-19
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多