当前位置: 首页 > 面试题库 >

Hadoop是否适合运行模拟?

谷善
2023-03-14
问题内容

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


 类似资料:
  • 我正试图通过服务提供者API在运行时由加载一个jar。然而,结果却是失败的。 以下是我所做的: null 我尝试了抽象类而不是我的SPI接口的接口,当我无法实现我的目标时,将它改回接口; 我已尝试获取资源并将我的作为输入参数传递,但没有工作; 我尝试了Apache实现的,但它也找不到适当的资源; 我的问题是如何通过从外部jar加载资源?SPI可能是一种解决方案吗?

  • 完全分布式运行模式 1 分析: 2 编写集群分发脚本xsync 1. scp(secure copy)安全拷贝 (1)scp定义: scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2) (2)基本语法 scp -r p d i r / pdir/ pdir/fname u s e r @ h a d o o p user@hadoop user@hadoo

  • 主要内容:1 本地运行模式,2 伪分布式运行模式Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。 1 本地运行模式 1.1 官方Grep案例 创建在hadoop-2.7.2文件下面创建一个input文件夹 2.将Hadoop的xml配置文件复制到input 3.执行share目录下的MapReduce程序 4.查看输出结果 1.2 官方WordCount案例 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹

  • 区分度不高的字段不适合做索引,因为索引页是需要有开销的,需要存储的,不过这类字段可以做联合索引的一部分。

  • 问题内容: 我想使用需要不时进行排序的数据结构。数据结构的大小几乎不会超过1000个项目。 哪一个是更好的- 或者? 哪种排序算法更好用? 问题答案: 在Java 7之前,它没有什么区别,因为它将列表的内容转储到数组中。 在Java 8中,使用会稍微快一些,因为它将调用并具有专门的版本,该版本可以直接对后备数组进行排序,从而保存副本。 因此,根据Java版本的不同,底线更好,因为它可以提供相似或更

  • FreeRADIUS应该被尽可能低的权限运行在生产环境中. 一个正常的安装创建一个专用的用户和组为了这个目的. 在CentOS和SLES上, 用户和组叫做radiusd. 在Ubuntu上, 用户和组叫做freerad. 只有特殊的配置才需要root权限.