Hadoop是否适合运行我的模拟?

已经在Java中编写了一个随机模拟,它从磁盘上的几个CSV文件加载数据(总计大约100MB)并将结果写入另一个输出文件(不是很多数据,只是一个布尔值和几个数字)。 还有一个参数文件,对于不同的参数,预计模拟输出的分布会发生变化。 要确定正确/最佳输入参数,我需要在多个输入参数配置中运行多个模拟,并查看每个组中输出的分布。 每个模拟需要0.1-10分钟,具体取决于参数和随机性。

我一直在阅读有关Hadoop的内容,并想知道它是否可以帮助我运行大量的模拟; 在不久的将来,我可以访问大约8台联网桌面计算机。 如果我理解正确,map函数可以运行我的模拟并吐出结果,reducer可能是标识。

我担心的是HDFS,它似乎意味着巨大的文件,而不是一些小的CSV文件(没有一个足够大,甚至可以构成64MB的最小建议块大小)。 此外,每个模拟只需要每个CSV文件的相同副本。

Hadoop对我来说是错误的工具吗?

我在这里看到了许多答案基本上都在说,“不,你不应该使用Hadoop进行模拟,因为它不是为模拟而构建的。” 我相信这是一个相当短视的观点,就像1985年的某个人说的那样,“你不能使用PC进行文字处理,PC也可以用于电子表格!”

Hadoop是构建模拟引擎的绝佳框架。 几个月以来,我一直在将它用于此目的,并且在小数据/大型计算问题上取得了巨大成功。 这是我迁移到Hadoop进行模拟的前5个原因(使用R作为我的语言进行模拟,顺便说一下):

  1. 访问:我可以通过Amazon Elastic Map Reduce租用Hadoop集群,而且我不需要投入任何时间和精力来管理集群。 这意味着我实际上可以开始在分布式框架上进行模拟,而无需在我的组织中获得管理批准!
  2. 管理: Hadoop无形地处理作业控制问题,例如节点故障。 我没有必要为这些条件编码。 如果节点发生故障,Hadoop会确保为该节点安排的sim在另一个节点上运行。
  3. 可升级:如果您以后遇到涉及大数据的问题,如果您习惯使用Hadoop而不必迁移到新解决方案,那么作为一个相当通用的地图减少引擎具有优秀的分布式文件系统。 因此,Hadoop为您提供了一个模拟平台,该平台也可以扩展到大型数据平台(几乎)免费!
  4. 支持 :作为开源并被许多公司使用,Hadoop的在线和关闭资源数量众多。 其中许多资源都是在假设“大数据”的情况下编写的,但它们对于学习以地图缩小方式进行思考仍然很有用。
  5. 可移植性:我使用专有工具在专有引擎之上构建了分析,这些工具需要相当多的学习才能开始工作。 当我后来换工作并发现自己在没有相同专有堆栈的公司时,我不得不学习一套新工具和一个新的模拟堆栈。 再也不。 我在SAS for R和我们旧的Hadoop网格框架进行交易。 两者都是开源的,我知道我可以在将来找到任何工作,并立即拥有触手可及的工具开始踢屁股。

如果您已经拥有Hadoop集群,则可以使Hadoop执行您的模拟,但它不是您所描述的应用程序类型的最佳工具。 Hadoop旨在使大数据处理成为可能,并且您没有大数据 – 您的计算量很大。

我喜欢Gearman( http://gearman.org/ )这类事情。

虽然您可以通过将MapReduce与Hadoop结合使用,但您所做的似乎更适合网格/作业调度程序,如Condor或Sun Grid Engine 。 Hadoop更适合做一些事情,你只需要一个(非常大的)输入,将它分成几个块供你的工作机器处理,然后减少它以产生输出。

由于您已经在使用Java,我建议您看一下GridGain ,我认为它特别适合您的问题。

简单地说,尽管Hadoop可以在这里解决您的问题,但它不是适合您目的的正确工具。