【问题标题】:improve performance Bulk load in cassandra提高性能 cassandra 中的批量加载
【发布时间】:2017-06-15 23:51:18
【问题描述】:

我们每秒生成 240,000 条记录并保存在 csv 文件中。现在我们想在 Cassandra 中加载它们。
我使用了 3 种方法:

  1. sstableloader : 我们生成 sstable 并使用 sstableloader 命令加载它们,但是这种方法需要很长时间才能完成,每秒行数为:15,000

  2. JmxBulkLoader:这个方法比sstableloader好。行数/秒为 17,000

  3. 复制:不适合批量使用并在使用时崩溃

系统配置:

CPU:Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz。 56芯
内存:64 G
硬盘:

1TB local for cassandra nodes and 
10TB in a network drive (data files stored in this hard)

我们在这台机器上有 2 个节点。

谢谢。

【问题讨论】:

  • 当您说 jmx 时,您到底是什么意思?您似乎对该主题非常了解,这几乎是(除了我不明白它是什么的 jmx )并编写自己的导入应用程序......理论上您可以直接在节点上生成 sstables 然后调用nodetool 刷新,但你所描述的几乎就是它(有趣的问题),但可能有一些我不知道的方式:)(一如既往)
  • 我想保存到 Cassandra 会比保存到 CSV 文件更快。我会做什么,使用一些缓存服务,如 redis,然后将记录保存到 Cassandra。
  • @MarkoŠvaljek 我们使用 jmx 从 java 驱动程序连接到 cassandra 并将数据发送到 cassandra。
  • @Gunwant 。如果我们使用redis。因为 cassandra 负载很低,所以 ram 可能已满。而且cassandra直接写每一行很慢,所以我们写在file里
  • 您能否编辑您的问题并发布磁盘上所有文件的 ls -lah、单个示例记录(如果它是一些敏感数据,请混淆)...还发布一个类的代码进行导入(你称之为 jmx 的)然后有人可能会帮助你......这个讨论目前是很多理论讨论。

标签: cassandra bulkinsert


【解决方案1】:

您可以从 csv 文件或直接从源中获取记录,然后使用 Java 的 ExecuteAsync 方法将其加载到 Cassandra 中。

看看博客:- https://blog.knoldus.com/2017/01/31/cassandra-tips-and-techniques/

【讨论】:

    猜你喜欢
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多