gpt4 book ai didi

hadoop - Cassandra 和 MapReduce - 最低设置要求

转载 作者:可可西里 更新时间:2023-11-01 14:17:39 26 4
gpt4 key购买 nike

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

存在关于如何在较旧的 Cassandra 版本 (0.7) 上为 MR 设置 Hadoop 的教程。我找不到当前版本的此类内容。

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

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

我需要 Cassandra Enterprise 吗?

最佳答案

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

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

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

执行Map-Reduce有两种可能:

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

关于hadoop - Cassandra 和 MapReduce - 最低设置要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com