【问题标题】:Cassandra and MapReduce - minimal setup requirementsCassandra 和 MapReduce - 最低设置要求
【发布时间】:2012-09-17 00:32:41
【问题描述】:

我需要在我的 Cassandra 集群上执行 MapReduce,包括数据局部性,即。每个作业仅查询属于作业运行的本地 Casandra 节点的行。

存在教程,介绍如何在旧 Cassandra 版本 (0.7) 上为 MR 设置 Hadoop。对于当前版本,我找不到这样的。

自 0.7 以来在这方面发生了什么变化?

最小设置需要哪些软件模块(Hadoop+HDFS+...)?

我需要 Cassandra Enterprise 吗?

【问题讨论】:

    标签: hadoop mapreduce cassandra


    【解决方案1】:

    Cassandra 包含一些足以与 Hadoop 集成的类:

    • ColumnFamilyInputFormat - 这是 Map 函数的输入,当使用 Cassandra 的随机分区器时,它可以从单个 CF 中读取所有行,或者在与 Cassandra 的有序分区器一起使用时可以读取行范围。 Cassandra 集群具有环形式,其中每个环部分负责具体的键范围。 Input Format 的主要任务是将 Map 输入划分为可以并行处理的数据部分 - 这些部分称为InputSplits。在 Cassandra 的情况下,这很简单 - 每个环范围都有一个主节点,这意味着输入格式将为每个环元素创建一个 InputSplit,这将导致一个 Map 任务。现在我们想在存储数据的同一主机上执行我们的 Map 任务。每个InputSplit 都会记住其环部分的 IP 地址——这是负责此特定密钥范围的 Cassandra 节点的 IP 地址。 JobTracker 将创建映射任务表单InputSplits 并将它们分配给TaskTracker 以执行。 JobTracker 将尝试查找与InputSplit 具有相同IP 地址的TaskTracker - 基本上我们必须在Cassandra 主机上启动TaskTracker,这将保证数据的局部性。
    • ColumnFamilyOutputFormat - 这为 Reduce 函数配置上下文。以便将结果存储在 Cassandra 中
    • 必须将所有 Map 函数的结果组合在一起,然后才能将它们传递给 reduce 函数 - 这称为 shuffle。它使用本地文件系统——从 Cassandra 的角度来看,这里不需要做任何事情,我们只需要配置本地临时目录的路径。此外,无需用其他东西替换此解决方案(例如在 Cassandra 中持久化) - 这些数据不必复制,Map 任务是幂等的。

    基本上使用提供的 Hadoop 集成可以在数据所在的主机上执行 Map 作业,Reduce 函数可以将结果存储回 Cassandra - 这就是我所需要的。

    执行 Map-Reduce 有两种可能:

    • org.apache.hadoop.mapreduce.Job - 这个类在一个进程中模拟 Hadoop。它执行 Map-Resuce 任务并且不需要任何额外的服务/依赖项,它只需要访问临时目录来存储映射作业的结果以进行 shuffle。基本上我们必须在 Job 类上调用一些 setter,其中包含 Map 任务的类名、Reduce 任务、输入格式、Cassandra 连接,当设置完成时必须调用 job.waitForCompletion(true) - 它启动 Map-Reduce 任务并等待为结果。该解决方案可用于快速进入 Hadoop 世界并进行测试。它不会扩展(单个进程),它会通过网络获取数据,但仍然 - 可以开始使用。
    • 真正的 Hadoop 集群 - 我还没有设置它,但据我了解,前面示例中的 Map-Reduce 作业可以正常工作。我们还需要额外的 HDFS,它将用于在 Hadoop 集群中分发包含 Map-Reduce 类的 jar。

    【讨论】:

      【解决方案2】:

      是的,我正在寻找同样的东西,似乎 DataStaxEnterprise 有一个简化的 Hadoop 集成, 阅读此http://wiki.apache.org/cassandra/HadoopSupport

      【讨论】:

      • DataStax Enterprise 确实简化了 Cassandra / Hadoop 集成,每个节点的成本约为 8000 英镑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多