【问题标题】:Bulk loading in Cassandra, issue of dirty reads, and its effect in clusterCassandra 中的批量加载、脏读问题及其在集群中的影响
【发布时间】:2019-01-27 04:13:01
【问题描述】:

我们的用例是将批量数据加载到我们的实时生产 Cassandra 集群中。我们必须每天在 Cassandra 中加载批量数据。我们遇到了 sstableloader。我们几乎没有相同的疑问:

1:当我们使用 sstableloader 将批量数据加载到我们的实时生产集群中时,我们是否有可能发生脏读?(基本上 sstableloader 是一次加载所有数据还是在获取数据时继续更新? ) 脏读在我们的生产环境中是不可接受的。

2:当我们将批量数据加载到我们的生产集群中时,它会影响集群可用性吗?(基本上我们正在将大量数据加载到生产集群中,这会影响它的性能吗?我们需要增加集群节点使其在批量加载期间具有高可用性?)

3:如果使用 sstableloader 在实时生产集群中存在脏读的可能性,请建议可以避免此问题的替代工具。我们希望所有批量数据一次出现,而不是增量数据。

谢谢!

【问题讨论】:

    标签: cassandra production-environment bulk-load dirtyread


    【解决方案1】:
    1. SStableloader 以增量方式加载数据。它不会一次加载所有内容。

    2. 它肯定会产生影响。这种影响的严重程度取决于流入的数据大小以及许多其他因素。您可以使用 sstableloader 中的选项来限制吞吐量,这可能会有所帮助。在测试集群上运行这个用例,看看 sstableloader 对您的数据集的影响。

    3. 除非您愿意停机,否则如果不提供至少一个小时间范围内的数据“脏”,就没有真正的方法来完成这项工作。

    例如,对于更喜欢冒险的人,您可能会将 SSTables 直接添加到所有节点的数据文件夹中并运行 nodetool refresh。但是,这不会完全同时进行,因此很容易在短时间内出现脏读或读取失败。

    【讨论】:

    • 感谢您的及时回复!根据 Datastax 的这篇文章(请通过 cmets 部分),在批量加载成功后,加载的 SSTables 是可见的。 :datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated 照此,我们不应该有脏读的问题。你能确认一下吗?
    • 它们在批量加载后可见,但在加载期间也可见。 SSTableloader 不保证数据将以独立的方式插入。
    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多