Recursion Hadoop适用于递归数据处理
我有一个需要递归应用的过滤算法,我不确定MapReduce是否适合这项工作。如果没有给出太多的信息,我可以说每个被过滤的对象都有一个集合(如果是有序列表或队列)Recursion Hadoop适用于递归数据处理,recursion,hadoop,mapreduce,bigdata,Recursion,Hadoop,Mapreduce,Bigdata,我有一个需要递归应用的过滤算法,我不确定MapReduce是否适合这项工作。如果没有给出太多的信息,我可以说每个被过滤的对象都有一个集合(如果是有序列表或队列) 数据不是很大,当我从SQL导出到 CSV 映射步骤很简单:列表的头部包含一个对象,可以将列表分类为属于N映射节点之一。每个节点上的过滤算法对分配给该节点的列表集合起作用,在过滤结束时,列表与过滤前保持不变,或者删除列表的标题 reduce函数也很简单:所有映射作业的列表都集中在一起,可能必须写回磁盘 当所有N节点返回其输出时,将使用这组
我的问题是这个工作适合Hadoop吗?如果没有,我的选择是什么?Q&D,但我建议您阅读MongoDB和Hadoop的比较:
如果不知道更多,很难说。你可能想两种都试试。发布你的结果,如果你这样做 Hadoop的主要优势在于它能够在大量机器上透明地分配工作。为了充分受益于Hadoop,您的应用程序必须具备以下三个特点:
正如我所见,你需要1000份工作。所有这些作业的设置和清理对于您的场景来说都是不必要的开销。而且,在我看来,网络传输的开销是不必要的。递归算法在分布式系统中很难实现,因为它们会导致快速饥饿。任何为其工作的中间件都需要支持分布式延续,即在不占用调用方资源(如线程)的情况下进行“递归”调用的能力 是一种本机支持分布式延续的产品 分布式延续的石蕊测试:尝试使用递归调用在分布式上下文中开发一个朴素的斐波那契实现。下面是使用continuations实现此功能的GridGain
希望有帮助。您是否正在尝试对大量列表执行操作,其中对于每个列表,删除满足某个谓词的最长前缀项,并返回列表的剩余尾部?如果是这样的话,我会在一个MapReduce作业中执行这个操作,在映射器中的一个循环中执行dropWhile操作。这是一个优化问题,每个映射作业解决一个较小的优化问题。reduce步骤结合了所有这些较小优化问题的结果,并重复该过程。您的观察是正确的,切中要害。问题是,N个作业中的每一个都需要大量递归,即生成N个作业,让所有作业完成后,获取输出数据并重复可能的M^2个递归,M是每个列表的平均长度。在一个m/c上,这是不可行的。