【问题标题】:Cassandra table analytics approaches?Cassandra 表分析方法?
【发布时间】:2016-05-24 12:43:29
【问题描述】:

我有一个要求,对 C* 表中相对较大的分区进行实时过滤和排序 ~ 2-30 亿行,每行有一百多列。应该可以对列的任何组合进行过滤和排序。我们尝试了 Apache Solr (DataStax Enterprise 4.8) 来完成这项工作,但遇到了下一个问题:

  • Solr 索引在频繁和批量数据更新的情况下会失效
  • 有时 Solr 只是不重建索引(等待数小时)
  • Solr 只能读取 CL=ONE,因此数据可能不一致

所以现在我们寻找另一种方法。我们现在正在尝试 Apache Spark 1.4。但看起来排序性能并不令人满意 - 2 bln 行大约需要 1.5 分钟(我们的目标约为 1-2 秒)。可能是因为我们在 Spark 学习的一开始就做错了什么。此外,我了解更多的处理器内核和内存可能会更好的性能。

今天我读到了关于内存索引的 Apache Inginte。对于我们的案例来说,它可能是更好的工具吗?

所以现在我只是在寻找执行此类工作的工具的建议。

谢谢。

p.s.:DataStax Enterprise 4.8、Apache Cassandra 2.1.9.791、Apache Solr 4.10.3.1.172、Apache Spark 1.4.1.1。

【问题讨论】:

    标签: java apache-spark solr cassandra ignite


    【解决方案1】:

    我认为你的方法是你能得到的最好的。 Spark(例如 SparkSQL)或像 Ignite 这样的内存数据网格。两者都会做同样的事情——将整个东西推入内存,然后对数据进行洗牌和切块。 http://velvia.github.io/Subsecond-Joins-in-Spark-Cassandra/ Flink 是另一个值得考虑的选择,但与 Spark 没有什么不同。

    另一方面,2-30 亿行应该适合 Postgres DB 或类似的东西。检查它是否对你来说还不够。

    在 Hadoop 世界中,您又拥有 Hive(缓慢而稳定)或 Impala(更快且内存重)或 Spark。但这些不适用于 Cassandra。而且我不相信您的数据大到足以考虑 Hadoop 环境(维护成本)。

    【讨论】:

      【解决方案2】:

      很抱歉,但需要在 2 秒内对 20 亿行、超过 100 列进行排序。我认为这将是一个很大的挑战。我的意思是你有 2000 亿列。建议每个分区键最多 2bln。而且我认为每个分区 2bln 太多了。如果你想要更好的火花性能,你必须找到瓶颈。你能多写一点关于你的设置吗?你有多少个 cassandra 节点?多少个 Spark 节点?硬件规格?

      【讨论】:

      • 现在我们在沙盒环境中测试它~DC1 有 4 个 Cassandra 节点,DC2 有 2 个 Spark 节点。每个节点有 16Gb 的内存和 8 个 2500 MHz 的 cpu。
      【解决方案3】:

      Apache Ignite 具有完整的 SQL 支持和索引,您可以使用这些索引来提高您的案例的性能。我一定会尝试的。

      详情请参考本页:https://apacheignite.readme.io/docs/sql-queries

      【讨论】:

        猜你喜欢
        • 2014-03-27
        • 2011-07-09
        • 1970-01-01
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 2016-03-08
        • 2016-08-04
        相关资源
        最近更新 更多