gpt4 book ai didi

android - 在可移植设备上运行 mapreduce

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

我听说有人在 google nexus one 上成功运行了 mapreduce。没有关于在 android 上运行完整集群 mapreduce 的性能的更多信息。

我真的很想在手机上以相对少量的数据非集群模式运行 mapreduce,完全使用 hadoop 真的值得吗?有没有任何地方可用的剥离版本?还有其他选择吗?

最佳答案

使用像 map reduce 这样的进程的全部意义在于将工作负载同时分散到多台计算机上,从而实现当前计算机无法实现的并发性。如果您没有任何联合多个 Android 设备的计划,那么几乎不需要使用 hadoop 之类的东西。

如果您可以加载设备上的所有数据(这正是您所说的,您可以做到)。最接近并行运行算法的方法是使用多个线程并拆分数据设置。您不必执行 map reduce 样式编程来获得并行编程的好处,并且将您的算法开发为生产者/消费者模型可能更容易。但是,如果您只是想拥有它,这里有一种方法可以做到。

我将从两个 BlockingQueues(入队列和出队列)和一个从文件(即 Producer)中读取数据的线程开始。创建一个线程池,从入队列读取并写入出队列。每个线程将对其中一个输入(即消费者)进行计算,并将其结果发布到出队列,以便生产者可以接收结果。通过入队列和出队列一次将完成 map-reduce 过程的一半。这通常称为生产者/消费者。您可以使用这种风格的架构做很多事情。

如果您想执行完整的 map-reduce,请重复该过程,以便您的 reduce 步骤并行运行。 Producer 将逐步从 map 中收集所有结果,并将这些结果反馈给 in-queue。每个消费者现在将执行减少步骤,并将其结果发布回出队列,生产者将在此处进行最终排序并将结果呈现给 UI。

因此,生产者的完整状态转换为:

  1. 解析输入文件,并创建工作负载以放入队列中。
  2. 从出队列中读取结果,直到完成所有映射过程。
  3. 按键组合结果。
  4. 将具有相同键的所有结果作为一个工作单元写入队列中。对收到的所有唯一 key 重复上述步骤。
  5. 读取出队列中返回的所有结果。

消费者状态转换为:

  1. 从队列中读取一个工作单元。
  2. 对该工作单元执行映射逻辑。
  3. 将结果+key写入出队。
  4. 从队列中读取一个工作单元。
  5. 对该工作单元执行归约逻辑。
  6. 将结果写入出队列。

Android 上的 Viola map reduce 样式框架。

关于android - 在可移植设备上运行 mapreduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4238377/

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