首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式队列和分布式计算平台有什么区别,如何选择?

分布式队列和分布式计算平台有什么区别,如何选择?
EN

Stack Overflow用户
提问于 2015-03-18 10:56:44
回答 2查看 219关注 0票数 0

有很多文件需要在两台计算机上实时处理,我想把它们分发到两台计算机上,这些任务需要尽快完成(即实时处理),我在考虑下面的计划:

(1)类似Gearman的分布式队列

(2)分布式计算平台,如hadoop/spark/storm/s4等

我有两个问题

(1) (1)和(2)的优势和劣势是什么?

(2)如何选择(2),hadoop?spark?storm?S4?还是其他?

谢谢!

也许我没有清楚地描述这个问题。在大多数情况下,有1000-3000个相同格式的文件,这些文件是独立的,你不需要关心它们的顺序,一个文件的大小可能是几十到几百KB,并且在未来,文件的数量和大小将会增加。我已经写了一个程序,它可以处理文件并提取数据,然后将数据存储在mongodb中。现在只有两台计算机,我只想要一个解决方案,可以处理这些文件与程序快速(尽快),并易于扩展和维护

分布式队列在我的例子中很容易使用,但可能很难扩展和维护,hadoop/spark在两台计算机中太“大”了,但很容易扩展和维护,这更好,我很困惑。

EN

回答 2

Stack Overflow用户

发布于 2015-03-18 21:40:48

这在很大程度上取决于你的“处理”的性质。这里适用的一些维度包括:

  1. 是相互独立的记录,还是需要某种形式的聚合?也就是说:你需要一些数据组合在一起吗?比方说,所有事务都来自单个用户帐户。
  2. 您的处理是否受CPU限制?内存限制?FileSystem绑定?
  3. 什么将被持久化?你将如何持久化它?
  4. 每当你看到新的数据,你需要重新计算旧的数据吗?
  5. 你能丢弃数据吗?
  6. is

data somewhat ordered?

  1. What is

expected?

一个好的解决方案将取决于这些问题的答案(可能还有我忘记的其他问题)。例如:

  1. 如果计算很简单,但存储和检索是主要关注点,那么您可能应该考虑分布式数据库,而不是您的选择。Spark可能最好的服务方式是将内容记录到分布式文件系统中,然后使用

运行批处理计算(通常应该比普通的

  1. 更好)。
  2. 可能不会,您可以在接收数据时使用Spark Streaming进行处理。
  3. 如果顺序和一致性很重要,发布/订阅体系结构可能会更好地为您提供服务,特别是如果您的负载可能超过两台服务器的处理能力,但您的员工可以在高峰和缓慢时间赶上。

等等。那么“你是如何选择的?”是“通过仔细查看特定问题的约束,估计系统的负载需求,并选择更好地匹配这些需求的解决方案”。所有这些解决方案和框架都主导着其他解决方案和框架,这就是为什么它们都是有活力的。选择完全取决于你愿意/能够做出的权衡。

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-03-18 17:31:31

首先,dannyhow是对的--这不是实时处理的内容。有一本很棒的书http://www.manning.com/marz/,它讲了很多关于lambda架构的内容。

你提到的两种方式服务于完全不同的目的,并与“任务”一词的定义相联系。例如,Spark会把你为他得到的整个工作分成“任务”,但一个任务的结果对你来说是无用的,你仍然需要等待整个工作完成。您可以创建处理同一数据集的小型作业,并使用spark的缓存来加快速度。但是,您不会从分发中获得太多好处(如果它们必须一个接一个地运行)。

文件大吗?它们之间有某种程度的联系吗?如果是的话,我会选择Spark。如果否,则为分布式队列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29113383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档