用Java编写了一个随机模拟,该模拟从磁盘上的几个CSV文件加载数据(总计约100MB),并将结果写入另一个输出文件(数据不多,只有布尔值和几个数字)。还有一个参数文件,对于不同的参数,模拟输出的分布可能会发生变化。为了确定正确/最佳的输入参数,我需要针对多个输入参数配置运行多个模拟,并查看每组中输出的分布。根据参数和随机性,每次仿真需要0.1-10分钟。
我一直在阅读有关Hadoop的文章,并想知道它是否可以帮助我运行大量仿真。在不久的将来,我可能会使用大约8台联网的台式机。如果我理解正确,则map函数可以运行我的仿真并吐出结果,而reducer可能就是身份。
我担心的是HDFS,它似乎意味着大文件,而不是少量的CSV小文件(其中任何一个都不大,甚至不足以构成建议的64MB最小块大小)。此外,每个模拟只需要每个CSV文件的相同副本。
Hadoop对我来说是错误的工具吗?
我在这里看到许多答案,它们基本上是在说:“不,您不应该将Hadoop用于仿真,因为它不是为仿真而构建的。” 我认为这是一个短视的观点,类似于1985年有人说过:“您不能使用PC进行文字处理,PC可以用于电子表格!”
Hadoop是构建模拟引擎的理想框架。我已经为此目的使用了几个月,并且在处理小数据/大计算问题方面取得了巨大的成功。这是我迁移到Hadoop进行仿真的5个主要原因(使用R作为仿真语言,顺便说一句):