【问题标题】:Cassandra : how to properly implement "global" back-pressure with multiples applications?Cassandra:如何正确实现多个应用程序的“全局”背压?
【发布时间】:2021-11-18 01:17:49
【问题描述】:

如您所知,在 Cassandra 中,当节点过载时,可能会严重影响您的生产,具体取决于所需的一致性,因为节点可能会变得无响应,整个守护程序也可能崩溃,提示可能会填满您的数据装载点,并且以此类推。

所以这里的关键字是back-pressure

要对back-pressureSpark on Cassandra做适当的处理,特别有以下属性:

--conf "spark.cassandra.output.throughputMBPerSec=2"
--total-executor-cores 24

(也有类似的back-pressure 选项与Datastax drivercqlsh。您基本上限制了每个内核的吞吐量,以应用一些back-pressure

假设,我在我的 Cassandra 集群上找到了我的全局写入吞吐量,并且我为我的 application1 设置了适当的设置,它工作正常。

但是,挑战仍然在于 Cassandra 集群上有许多开发人员。所以在给定时间,我可能会同时运行 Spark application1application2application3,...。

问题:我有哪些选择可以确保在给定时间的写入吞吐量(无论有多少应用程序同时运行)在全球范围内不会给 Cassandra 带来太大压力,从而伤害我的生产工作量?

谢谢

【问题讨论】:

    标签: cassandra datastax datastax-enterprise datastax-java-driver spark-cassandra-connector


    【解决方案1】:

    我建议人们分离分析工作负载的方法是启动另一个(逻辑)数据中心。当然,它可能在同一个物理数据中心。但您需要的是独立的计算和存储,以防止分析负载干扰生产流量。

    首先,确保您使用GossipingPropertyFileSnitch (cassandra.yaml) 运行并且您的键空间使用NetworkTopologyStrategy。同样,您需要确保您的键空间定义包含一个命名数据中心,并且您的生产应用程序/服务配置为使用该数据中心(例如:dc1,如下所示)作为其默认 DC:

    ALTER KEYSPACE product_data WITH
        REPLICATION={'class':'NetworkTopologyStrategy',
                     'dc1':'3'};
    

    新基础设施启动后,安装 Cassandra 并将节点作为新 DC 加入集群,方法是在 cassandra-rackdc.properties 文件中指定新名称。比如:

    dc=dc1_analytics
    

    接下来调整您的键空间以将数据复制到新的 DC。

    ALTER KEYSPACE product_data WITH
        REPLICATION={'class':'NetworkTopologyStrategy',
                     'dc1':'3','dc1_analyitcs':'3'};
    

    在新 DC 上运行修复/重建,然后将 Spark 作业配置为仅使用 dc1_analytics

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2013-03-14
      相关资源
      最近更新 更多