优化3节点8核心/ 16G Cassandra集群的写入性能

时间:2016-01-05 04:34:29

标签: optimization cassandra spark-cassandra-connector

我们已经设置了一个3节点性能集群,每个集群有16G RAM和8个核心。我们的用例是将100万行写入101个列的单个表中,目前写入操作需要57-58分钟。我们在优化集群写入性能方面的第一步应该是什么?

1 个答案:

答案 0 :(得分:2)

我要做的第一件事就是查看正在执行写操作的应用程序:

  1. 编写的应用程序是什么语言,它使用的驱动程序是什么?一些司机可以提供比其他司机更好的固有表现即Python,Ruby和Node.js驱动程序只能使用一个线程,因此可能需要考虑运行应用程序的多个实例(每个核心1个)。您的问题已被标记为' spark-cassandra-connector'所以这可能表明你正在使用它,它使用的是datastax java驱动程序,它应该作为单个实例运行良好。
  2. 您的写入是异步还是一次写入一个数据?它同时执行多少次写入?太多的并发写入可能会导致Cassandra的压力,但并不是很多并发写入会降低吞吐量。如果您使用的是火花连接器,您使用的是saveToCassandra / saveAsCassandraTable还是其他?
  3. 您使用的是批处理吗?如果是,您每批插入/更新多少行?太多的行可能会对cassandra施加很大的压力。此外,您的所有插入/更新是否都在批处理中转到同一个分区?如果它们不在同一个分区中,您应该考虑对它们进行批处理。
  4. 特定于Spark连接器:您可以调整写入设置,如批量大小,批处理级别(即通过分区或副本集),以每个核心mb写入吞吐量等。您可以查看所有这些设置here
  5. 我要看的第二件事是查看每个节点上cassandra方面的指标。

    1. 垃圾收集指标是什么样的?您可以通过取消注释conf / cassandra-env.sh(As shown here)中的行来启用GC日志。 Are Your Garbage Collection Logs Speaking to You?。您可能需要调整GC设置,如果您使用的是8GB堆,则默认值通常都很好。
    2. 您的CPU和磁盘利用率是否表明您的系统负载过重?您的硬件或配置可能会限制您的功能Selecting hardware for enterprise implementations
    3. nodetool cfhistogramsnodetool proxyhistograms之类的命令可以帮助您了解您的请求需要多长时间(代理组合图)和cfhistograms(特别是延迟)可以让您深入了解需要花费的时间之间的任何其他可能的差异处理请求与执行变异操作。