5

カサンドラの設定に「commitlog_segment_size_in_mb: 32」がありますが、以下のエラーは最大サイズが 16777216 で、約 16 MB であることを示しています。以下のエラーを修正するための正しい設定を見ていますか?

http://mail-archives.apache.org/mod_mbox/cassandra-user/201406.mbox/%3C53A40144.2020808@gmail.com%3Eで提供されている提案に基づいて、この設定を参照しています。

Cassandra には 2.1.0-2 を使用しています。

Kairosdb を使用しており、書き込みバッファの最大サイズは 0.5Mb です。

WARN  [SharedPool-Worker-1] 2014-10-22 17:31:03,163 AbstractTracingAwareExecutorService.java:167 - Uncaught exception on thread Thread[SharedPool-Worker-1,5,main]: {}
java.lang.IllegalArgumentException: Mutation of 17076203 bytes is too large for the maxiumum size of 16777216
        at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:216) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:203) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:371) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:351) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.Mutation.apply(Mutation.java:214) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.db.MutationVerbHandler.doVerb(MutationVerbHandler.java:54) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_67]
        at org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:163) ~[apache-cassandra-2.1.0.jar:2.1.0]
        at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:103) [apache-cassandra-2.1.0.jar:2.1.0]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
4

2 に答える 2

3

正しい設定です。これは、構成されたコミット ログ セグメント サイズの 50% を超えると、Cassandra がこの書き込みを破棄することを意味します。そのため、クラスター内の各ノードの Cassandra.yaml でパラメータ commitlog_segment_size_in_mb: 64 を設定し、各ノードを再起動して変更を有効にします。

原因: 設計上の意図により、許容される最大セグメント サイズは、構成された commit_log_segment_size_in_mb の 50% です。これは、Cassandra が大量の空きスペースを持つセグメントを書き込むことを避けるためです。

詳しく説明します。最大 2 つの 32MB セグメントが 64MB に収まりますが、40MB は一度しか収まらず、より多くの未使用スペースが残ります。

datastax からの参照リンク:

https://support.datastax.com/hc/en-us/articles/207267063-Mutation-of-x-bytes-is-too-large-for-the-maxiumum-size-of-y-

于 2016-06-24T07:17:57.203 に答える