有很多文件需要实时处理两台计算机,我想将它们分发到两台计算机上,这些任务需要尽快完成(意味着实时处理),我在考虑低于计划:
(1)像Gearman
这样的分布式队列(2)像hadoop / spark / storm / s4等分布式计算平台
我有两个问题
(1)(1)和(2)之间的优缺点是什么?
(2)如何选择(2),hadoop?spark?storm?s4?或其他?
谢谢!
也许我没有清楚地描述这个问题。在大多数情况下,有1000-3000个文件具有相同的格式,这些文件是独立的,您不需要关心他们的顺序,一个文件的大小可能是几十到几百KB,将来,文件的数量和单个文件的大小会上升。我编写了一个程序,它可以处理文件并获取数据,然后将数据存储在mongodb中。现在只有两台计算机,我只想要一个可以快速处理这些文件的解决方案(尽快)并且易于扩展和维护
分布式队列很容易在我的情况下使用bur可能难以扩展和维护,hadoop / spark在两台计算机中“大”但容易扩展和维护,这更好,我很困惑。
答案 0 :(得分:1)
这很大程度上取决于你处理的性质#34;。这里适用的一些维度是:
一个好的解决方案将取决于这些的答案(可能还有其他我忘记了)。例如:
等。那么答案是"你如何选择?"通过仔细查看特定问题的约束条件,估算系统的负载需求并选择更符合这些问题的解决方案"。所有这些解决方案和框架都支配着其他解决方案和框架,这就是为什么他们都活着并且都在踢。选择权取决于您愿意/能够做出的权衡。
希望它有所帮助。
答案 1 :(得分:0)
首先,dannyhow是对的 - 这不是实时处理的内容。有一本很棒的书http://www.manning.com/marz/说了很多关于lambda archtecture的书。
您提到的两种方式完全不同,并且与单词#34; task"的定义相关联。例如,Spark将为你完成一项完整的工作并将其划分为" tasks",但是一项任务的结果对你来说没用,你还需要等待整个工作完成。您可以创建处理同一数据集的小作业,并使用spark的缓存来加快速度。但是后来你从分销中获得了很多好处(如果必须一个接一个地运行)。
文件大吗?彼此之间是否有某种联系?如果是的话,我会选择Spark。如果不是,则分布式队列。