一尘不染

Hadoop是否适合运行模拟?

java

用Java编写了一个随机模拟,该模拟从磁盘上的几个CSV文件加载数据(总计约100MB),并将结果写入另一个输出文件(数据不多,只有布尔值和几个数字)。还有一个参数文件,对于不同的参数,模拟输出的分布可能会发生变化。为了确定正确/最佳的输入参数,我需要针对多个输入参数配置运行多个模拟,并查看每组中输出的分布。根据参数和随机性,每次仿真需要0.1-10分钟。

我一直在阅读有关Hadoop的文章,并想知道它是否可以帮助我运行大量仿真。在不久的将来,我可能会使用大约8台联网的台式机。如果我理解正确,则map函数可以运行我的仿真并吐出结果,而reducer可能就是身份。

我担心的是HDFS,它似乎意味着大文件,而不是少量的CSV小文件(其中任何一个都不大,甚至不足以构成建议的64MB最小块大小)。此外,每个模拟只需要每个CSV文件的相同副本。

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


阅读 198

收藏
2020-12-03

共1个答案

一尘不染

我在这里看到许多答案,它们基本上是在说:“不,您不应该将Hadoop用于仿真,因为它不是为仿真而构建的。”
我认为这是一个短视的观点,类似于1985年有人说过:“您不能使用PC进行文字处理,PC可以用于电子表格!”

Hadoop是构建模拟引擎的理想框架。我已经为此目的使用了几个月,并且在处理小数据/大计算问题方面取得了巨大的成功。这是我迁移到Hadoop进行仿真的5个主要原因(使用R作为仿真语言,顺便说一句):

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