【问题标题】:Strange replication in CassandraCassandra 中的奇怪复制
【发布时间】:2016-12-15 16:05:16
【问题描述】:

我在 Cassandra 的“测试集群”中本地配置了 3 个节点。当我运行它们并在所有三个节点上创建一些键空间或表时,键空间或表就会出现。

我正在处理的问题是,当我从 CSV 导入表中的数百万行时,我已经构建了整个数据突然出现在所有三个节点上。我在三个节点上复制了相同的数据。

据我所知,我正在导入的数据应该在节点上复制/分布,但只是部分。第一个节点上的一个分区,第三个节点上的第二个分区,第二个节点上的第三个分区,第一个节点上的第四个分区和...... 我是对的还是我错过了一些重要的东西?

此外,对于多节点集群,我的本地写入速度约为 10k 行/秒。是不是有点太低了?

我想发起讨论,这样我也许可以从你的经验中学到更多东西,看看我在哪里搞砸了。

谢谢!

【问题讨论】:

    标签: performance cassandra replication cassandra-2.0 cassandra-2.1


    【解决方案1】:

    在集群中写入数据的节点数由该键空间的复制因子决定。如果您有 3 个节点并且数据正在写入所有节点,则必须将此设置设置为 3。如果您只想将数据复制到两个节点,则将此值设置为 2。

    您的写入速度将受到您在写入时指定的一致性级别的影响。如果您将其设置为 ALL,那么您必须等到所有要写入数据的节点都已写入数据(在您的情况下,所有 3 个节点都基于您的复制因子)。降低写入的一致性级别可能会让您获得更快的写入时间。您可以进一步研究复制因子、写入一致性级别和读取一致性级别之间的平衡。

    【讨论】:

    • 那么你怎么看,为什么我的所有数据都被复制到所有节点而不是分区?您对 qurom 集有什么建议,将其设置为仅检查一个节点会更好吗?另外,我看到你的知识比我好,我设置endpoint_snitch: GossipingPropertyFileSnitch 可以吗,还是用SimpleSnitch 配置更好?谢谢你:)
    • GossipingPropertyFileSnitch 没问题,只要您配置了 cassandra-rackdc.properties。有关详细信息,请参阅此页面:docs.datastax.com/en/cassandra/2.0/cassandra/architecture/… 我不确定我是否理解您的第一个问题。您的数据由复制因子复制。如果此复制因子设置为您拥有的节点数,则它会复制到所有节点。如果它较低,那么它将根据分区和它在令牌范围内的位置进行复制。
    • 对于 quorom 配置,是否要保证写入或读取的一致性与您设置的一致性级别取决于您。如果您的写入量更大,那么您会希望在读取时保证它(因为写入所需的时间更少)。只要读取时的 CL + 写入时的 CL 大于复制因子 (CLr+CLw>RF),就可以保证一致性。
    • 嗯,我只是想证明三个节点在插入数据时可以达到等 30k 行/秒。所以我试图用一致性换取更高的吞吐量。我假设通过三节点集群的默认配置,吞吐量的 lvl 应该很容易达到,但大约 18k 行/秒是我的平均限制。此外,我将键空间设置为replication_factor:1 并在 ONE 上具有一致性 lvl 另外我读到加快写入操作的方法是设置键空间 durability_write:false,我将在其中禁用 commit_log。这对你好还是不好?
    • 您对其进行配置的方式并未提供集群中的任何分区容差。如果您丢失了一个节点,则驻留在该节点上的所有数据都将不可用。关闭持久性并且只写入一个节点,我相信任何时候你丢失一个节点,你都会保证丢失内存中的数据而不是刷新到磁盘。如果您对所有这些都满意,是的,您将获得更快的写入速度。但是,如果读取和写入的 RF 为 2,CL 为 1,您可以获得同样更快的写入速度、相同的一致性折衷,并且具有一定的分区容差。
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2016-09-17
    • 2011-05-23
    • 2020-09-18
    • 1970-01-01
    • 2018-10-26
    • 2016-11-15
    • 2018-08-07
    相关资源
    最近更新 更多