【问题标题】:Analytics and Mining of data sitting on Cassandra坐在 Cassandra 上的数据分析和挖掘
【发布时间】:2013-01-10 00:46:21
【问题描述】:

我们有大量来自存储在 Cassandra 中的各种网站的用户交互数据,例如 cookie、页面访问、广告查看、广告点击等,我们希望对其进行报告。我们当前的 Cassandra 架构支持基本的报告和查询。但是,我们也希望构建大型查询,这些查询通常涉及大型列族(包含数百万行)上的联接。

什么方法最适合这个?一种可能性是将数据提取到关系数据库(如 mySQL)并在那里进行数据挖掘。替代方法可能是尝试使用带有 hive 或 pig 的 hadoop 来为此目的运行 map reduce 查询?我必须承认我对后者的经验为零。

任何人都经历过一种与另一种的性能差异?您是否会在实时 Cassandra 生产实例或备份副本上运行 map reduce 查询以防止查询负载影响写入性能?

【问题讨论】:

    标签: hadoop mapreduce cassandra analytics


    【解决方案1】:

    根据我的经验,Cassandra 更适合需要实时访问数据、快速随机读取以及通常只处理大流量负载的进程。但是,如果您开始进行复杂的分析,您的 Cassandra 集群的可用性可能会受到显着影响。一般来说,从我所看到的情况来看,不理会 Cassandra 集群最符合您的利益,否则可用性开始受到影响。

    听起来您需要一个分析平台,我绝对建议您将报告数据从 Cassandra 导出,以便在离线数据仓库系统中使用。

    如果您负担得起,拥有一个真正的数据仓库可以让您在多个表上执行复杂的查询和复杂的连接。这些数据仓库系统被广泛用于报告,以下是我认为主要参与者的列表:

    • Netezza
    • Aster/TeraData
    • 垂直

    最近获得很大动力的是Amazon Redshift,但它目前处于测试阶段,但如果你能动手,你可以尝试一下,因为它看起来像一个可靠的分析平台,具有价格比上述解决方案更具吸引力。

    使用 Hadoop MapReduce/Hive/Pig 等替代方案也很有趣,但可能无法替代 Hadoop 技术。如果你有 SQL 背景,我会推荐 Hive,因为它很容易理解你在做什么,而且你可以轻松扩展。实际上已经有一些库与 Hadoop 集成,例如 Apache Mahout,它允许您在 Hadoop 集群上进行数据挖掘,您一定要尝试一下,看看它是否符合您的需求。

    为了给您一个想法,我使用的一种迄今为止运行良好的方法是在 Hive 中预先聚合结果,然后在 Netezza 等数据仓库中生成报告本身以计算复杂的连接。

    【讨论】:

    • 非常感谢您富有洞察力的 cmets。我实际上遇到了另一篇文章here.。在 hive/hadoop 的使用方面,那里的想法与您的想法相呼应。我现在相信使用 hadoop/hive/pig 预先聚合数据,然后转储到关系数据仓库进行分析是正确的方法。
    【解决方案2】:

    披露:我是 DataStax 的工程师。

    除了 Charles 的建议之外,您可能还想查看 DataStax Enterprise (DSE),它提供了 Cassandra 与 Hadoop、Hive、Pig 和 Mahout 的完美集成。

    正如 Charles 所提到的,您不希望直接针对处理实时应用程序需求的 Cassandra 节点运行分析,因为它们会对性能产生重大影响。为避免这种情况,DSE 允许您通过使用多个虚拟“数据中心”(在 NetworkToplogyStrategy 术语的意义上)将集群的一部分严格用于分析。作为 Hadoop 作业的一部分执行的查询只会影响这些节点,基本上不会影响您的普通 Cassandra 节点。此外,您可以根据性能需求分别向上或向下扩展集群的每个部分。

    DSE 方法有几个好处。首先是您不需要在处理数据之前执行任何 ETL; Cassandra 的正常复制机制使专门用于分析的节点保持最新。其次,您不需要外部 Hadoop 集群。 DSE 包括一个名为 CFS (CassandraFS) 的 HDFS 替代品,因此 Hadoop 作业的所有源数据、中间结果和最终结果都可以存储在 Cassandra 集群中。

    【讨论】:

    • 嗨,泰勒,非常感谢!你提出了一个非常有趣的观点!您能否指出一些文档,详细说明 DSE 将一部分 Cassandra 集群用于分析的能力?
    • 我很难找到一个总结它的页面,但请阅读NetworkTopologyStrategy(如果您不熟悉它)。 CFS 数据仅在分析“DC”中有副本,而 Cassandra 数据在两者中都有副本。普通 Cassandra 节点可以在 LOCAL_QUORUM 写入,而分析节点可以在 LOCAL_QUORUM 读取,因此两个 DC 都不会对另一个 DC 的性能产生很大影响。这也可能有用:datastax.com/docs/1.1/cluster_architecture/…
    • 感谢 Tyler,我能够阅读该主题,这解决了我们的很多问题。我们一定会尝试并继续采用这种方法。
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2011-02-07
    • 2019-09-21
    • 1970-01-01
    • 2015-05-16
    • 2021-11-16
    • 2014-02-02
    • 2010-10-21
    相关资源
    最近更新 更多