流计算:流式处理框架
流失处理框架
不同的流处理框架具有不同的特点,同时也适应不同的场景:
处理模式
对于流式处理框架而言,有两种完全不同的处理模式:
原生流(Native)方式,将所有的数据一条一条地处理,例如,Storm、Samza 和 Flink。
微批处理(Batch)方式,将输入数据以某个时间间隔 T 切分成多个微批量数据,之后对每个微批数据进行处理,例如 Spark Streaming、Trident 等。
消息传输保障
一般有三种消息保障:
At Most Once,表示每条消息传输次数为 0 次或 1 次,消息有可能会丢失,例如,Storm、Samza。
At Least Once,表示每条消息传输次数大于 1 次,消息有可能会重复但不会丢失,例如 Spark Streaming、Trident。
Exactly Once,表示每条消息只会精准地传输一次,消息既不会丢失也不会重复,例如,Flink。
容错机制
在企业日常生产环境中,有可能会发生网络故障、节点宕机或程序异常等,框架应该具备在发生错误导致任务中断后,可以恢复到之前成功的状态重新消费,具体的实现机制有:
记录确认机制(Record ACKs)的容错机制,例如,Storm、Trident。
基于日志的容错机制,例如,Samza。
基于 RDD CheckPoint 的方式的容错机制,例如,Spark Streaming。
性能
流式框架的一些性能指标:
延迟时间(Latency),其中 Storm、Samza 采用 Native 处理方式,其延时很低;其中 Storm 在实时性上表现更优,Spark Streaming、Trident 采用微批处理方式,其延时更高。
吞吐量(Throughput),其中,Spark Streaming 和 Samza 优于 Storm 和 Trident。
参考资料
《Spark Streaming 实时流式大数据处理实战》
版权声明: 本文为 InfoQ 作者【正向成长】的原创文章。
原文链接:【http://xie.infoq.cn/article/e90739896d0bd871b0929cf0c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论