【问题标题】:Spark Cassandra Performance IssueSpark Cassandra 性能问题
【发布时间】:2016-02-10 13:37:50
【问题描述】:

我是 Spark 和 Cassandra 的新手。我面临一个主要的性能问题。我在 Spark 中每 5 秒从 Kafka 流式传输数据,然后使用 JRI 对 R 语言中的数据执行分析,最后将数据保存到 Cassandra 各自的列族。将数据保存到 Cassandra 的持续时间(以毫秒为单位)随着输入请求数量的增加而迅速增加 [每个请求为 200KB]。

火花代码:

 sessionData.foreachRDD(new Function<JavaRDD<NormalizedData>, Void>() {
    public Void call(JavaRDD<NormalizedData> rdd)     {
System.out.println("step-3 " + System.currentTimeMillis());
javaFunctions(rdd).writerBuilder("keyspace",normalized_data",mapToRow(NormalizedData.class)).saveToCassandra();
System.out.println("step-4 " + System.currentTimeMillis());}}

【问题讨论】:

  • spark-default.conf:connection.spark.Cassandra.connection.keep_alive_ms 3600000 spark.Cassandra.output.batch.size.rows 2 spark.cassandra.output.concurrent.writes10 spark.cassandra.output .batch.size.bytes 2m spark.cassandra.input.split.size_in_mb 1 mb请告诉我

标签: apache-spark cassandra spark-cassandra-connector


【解决方案1】:

通过在同一台服务器上使用 Spark 和 Cassandra,我能够提高性能。这种延迟是因为 Spark 和 Cassandra 位于不同的服务器上,尽管它们位于 AWS 的同一区域。网络延迟是影响数据局部性的主要原因。谢谢。

【讨论】:

    【解决方案2】:

    您可以参考此blog 进行 Spark-Cassandra 连接器调优。您将对可以预期的性能数字有所了解。您还可以尝试另一个开源产品 SnappyData,它是 Spark 数据库,它将在您的用例中为您提供非常高的性能。

    【讨论】:

      【解决方案3】:

      我还使用 Cassandra Spark 组合来进行实时分析。以下是一些最佳实践:

      1. 数据局部性 - 在 Spark 独立的情况下使用 Worker 节点运行 Cassandra 守护程序,在 Yarn 的情况下使用节点管理器运行],在 Mesos 的情况下使用 Mesos 工作人员

      2. 提高并行度即创建更多分区/任务

      3. 使用 Cassandra 连接池提高吞吐量

      在您的情况下,您使用 JRI 在 Java 端调用 R。这个有点 缓慢和性能开销。所以直接使用 SparkR 将 R 与 Spark 集成,而不是直接使用 JRI。

      【讨论】:

        猜你喜欢
        • 2016-11-29
        • 2020-11-10
        • 2016-07-12
        • 2020-01-26
        • 2017-04-23
        • 2018-09-01
        • 1970-01-01
        • 2015-11-10
        • 2018-08-16
        相关资源
        最近更新 更多