细雨:快速和可适应的大规模流处理
摘要
大规模流媒体系统的目标是提供高吞吐量和低延迟。它们通常用于运行任务关键型应用程序,并且必须24×7可用。因此,这样的系统需要适应工作负载的故障和固有变化,对延迟和吞吐量的影响最小。不幸的是,现有的解决方案要求运营商在正常操作期间实现低延迟和在适应过程中产生最小影响之间做出选择。连续操作员流系统,如Naiad和Flink,在正常执行期间提供低延迟,但在适应(例如恢复)期间产生高开销,而微批处理系统,如Spark streaming和FlumeJava,在正常操作期间以高延迟为代价快速适应。我们的主要观察结果是,虽然流工作负载需要毫秒级的处理,但工作负载和集群属性的变化不那么频繁。在此基础上,我们开发了Drizzle系统,该系统将处理间隔与用于容错和适应性的协调间隔解耦。我们在128节点EC2集群上的实验表明,在Yahoo Streaming Benchmark上,Drizzle可以实现不到100ms的端到端记录处理延迟,并且可以比Spark低2 - 3倍的延迟。Drizzle也表现出更好的适应性,从故障中恢复的速度比Flink快4倍,同时在恢复过程中具有高达13倍的低延迟。