Spark流——微批处理的回归 Spark还配有一个流数据处理模型,这当然让我很感兴趣。还有一篇对设计总结得很漂亮的 论文。与Twitter的 Storm框架相比,Spark采用了一种有趣而且独特的办法。Storm基本上是像是放入独立事务的管道,在其中事务会得到分布式的处理。相反,Spark采用一个模型收集事务,然后在短时间内(我们假设是5秒)以批处理的方式处理事件。所收集的数据成为他们自己的RDD,然后使用Spark应用程序中常用的一组进行处理。 作者声称这种模式是在缓慢节点和故障情况下会更加稳健,而且5秒的时间间隔通常对于大多数应用已经足够快了。对于这一点,我不太确定,因为分布式计算总是很复杂,我不相信你能随意说有些东西是就比其他人的好。这种方法也很好地统一了流式处理与非流式处理部分,这一点是千真万确的。 结束语 Spark在我看来还是很有前途的,加上Spark被给予的支持和获得的关注,我坚信它将成熟起来并将在这个领域扮演更加重要的角色。当然,它不可能适用于所有场景,正如作者承认的那样,基于RDD稳定性只更改很少条目的操作就不适合。原则上,你必须对整个数据集备份,即使你只是想要更改一个条目。这可以很好地并行处理,但成本很高。copy-on-write在这里可能更有效,但是还未被实现。 最上层是在TU Berlin的研究项目,有类似的目标,然而却通过更为复杂的操作(如迭代)来发展,不仅是为了容错能力存储一系列操作,而且要将它们用于全局调度优化和平行化。 |