已经在Java中编写了一个随机模拟,它从磁盘上的几个CSV文件加载数据(总计大约100MB)并将结果写入另一个输出文件(不是很多数据,只是一个布尔值和几个数字).还有一个参数文件,对于不同的参数,预计模拟输出的分布会发生变化.要确定正确/最佳输入参数,我需要在多个输入参数配置中运行多个模拟,并查看每个组中输出的分布.每个模拟需要0.1-10分钟,具体取决于参数和随机性.
我一直在阅读有关Hadoop的内容,并想知道它是否可以帮助我运行大量的模拟; 我可能在不久的将来可以访问大约8台联网桌面计算机.如果我理解正确,map函数可以运行我的模拟并吐出结果,reducer可能是标识.
我担心的是HDFS,它似乎意味着巨大的文件,而不是一些小的CSV文件(没有一个足够大,甚至可以构成64MB的最小建议块大小).此外,每个模拟只需要每个CSV文件的相同副本.
Hadoop对我来说是错误的工具吗?
我在这里看到了许多答案基本上都在说,"不,你不应该使用Hadoop进行模拟,因为它不是为模拟而构建的." 我相信这是一个相当短视的观点,就像1985年的某个人说的那样,"你不能用PC进行文字处理,PC就是用于电子表格!"
Hadoop是构建模拟引擎的绝佳框架.几个月以来,我一直在将它用于此目的,并且在小数据/大型计算问题上取得了巨大成功.这是我迁移到Hadoop进行模拟的前5个原因(使用R作为我的语言进行模拟,顺便说一下):
访问:我可以通过Amazon Elastic Map Reduce租用Hadoop集群,而且我不需要投入任何时间和精力来管理集群.这意味着我实际上可以开始在分布式框架上进行模拟,而无需在我的组织中获得管理批准!
管理: Hadoop无形地处理作业控制问题,例如节点故障.我没有必要为这些条件编码.如果节点出现故障,Hadoop会确保为该节点安排的sim在另一个节点上运行.
可升级:如果您以后遇到涉及大数据的问题,如果您习惯使用Hadoop而不必迁移到新解决方案,那么作为一个相当通用的地图减少引擎具有优秀的分布式文件系统.因此,Hadoop为您提供了一个模拟平台,该平台也可以扩展到大型数据平台(几乎)免费!
支持:作为开源并被众多公司使用,Hadoop的在线和关闭资源数量众多.其中许多资源都是在假设"大数据"的情况下编写的,但它们对于学习以地图缩小方式进行思考仍然很有用.
可移植性:我使用专有工具在专有引擎之上构建了分析,这些工具需要相当多的学习才能开始工作.当我后来换工作并发现自己在没有相同专有堆栈的公司时,我不得不学习一套新的工具和一个新的模拟堆栈.再也不.我在SAS for R和我们旧的Hadoop网格框架进行交易.两者都是开源的,我知道我可以在将来找到任何工作,并立即有工具在我的指尖开始踢屁股.