MapReduce还是批处理作业?

时间:2011-07-12 05:56:35

标签: batch-file scalability jobs mapreduce parallel-processing

我有一个需要在很多文件(1000's)上调用的函数。每个都独立于另一个,可以并行运行。每个文件的函数输出不需要与其他文件组合(当前)。我有很多服务器可以扩展,但我不知道该怎么做:

1)在其上运行MapReduce

2)创建1000个作业(每个作业都有不同的文件)。

一种解决方案会优于另一种吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

MapReduce将为分发大型数据集工作负载提供重要价值。在您的情况下,在小型独立数据文件上进行较小的独立工作,在我看来,这可能是过度的。

所以,我更喜欢运行一堆动态创建的批处理文件。

或者,或者使用集群管理器和作业调度程序,例如 SLURM https://computing.llnl.gov/linux/slurm/

  

SLURM:高度可扩展的资源管理器

     

SLURM是专为Linux集群设计的开源资源管理器   各种尺寸。它提供三个关键功能。首先它分配   对资源(计算机节点)的独占和/或非独占访问   用户可以在一段时间内完成工作。第二,它   提供了启动,执行和监控工作的框架   (通常是并行作业)在一组分配的节点上。最后,它   通过管理待处理队列来仲裁资源争用   工作

答案 1 :(得分:2)

由于它只有1000个文件(而不是1000000000个文件),因此完全成熟的HADOOP设置可能有点过分。 GNU Parallel尝试填补顺序脚本和HADOOP之间的空白:

ls files | parallel -S server1,server2 your_processing {} '>' out{}

您可能想了解--sshloginfile。根据文件的存储位置,您可能也想学习--trc

观看介绍视频以了解详情:http://www.youtube.com/watch?v=OpaiGYxkSuQ