Spark的流处理-1

来源:互联网 发布:网络感叹号 不能上网 编辑:程序博客网 时间:2024/05/09 19:23

大规模流式处理数据的难题

一:可伸缩的节点数量

二:计算之外的开销最小化,比如减少复制,减少上行流的备份

三:减少延迟,支持时效0.5-2秒以内的80%实时流系统的能力

四:快速从故障中进行恢复,或者从慢节点中进行恢复


业务场景:

实时日志处理,机器学习

实时推荐系统


传统解决方案罗列:

1.模型

基于连续操作模型,长期运行的带有状态的操作,会接受每条记录,更新状态,并且发送新的记录

问题:恢复故障

思路:复制,上行流备份【难以适合大规模集群,复制占用机器资源,上行流需要长时间恢复】,复制方案中的同步协议(Flux)


2.Spark的模型

D-Streams(离散流):将运算流化成一系列短时间间隔的,无状态,确定性的批计算。

a.针对给定的输入数据,每个时间间隔的状态完全确定,无需同步协议

b.针对新、旧状态之间的依赖关系,细粒度可见


难点:如何降低延迟,在内存中保持数据,并且根据lineage(血统)来进行恢复,避免复制

如何从故障和慢节点中进行恢复?

       当某一个节点时效时,集群中的各个节点,都分担并且计算出丢失的那部分的RDD。

Spark还进一步支持,推测性执行


案例分析:

a.网站活动统计数据 (Facebook的Puma系统)

b.集群监控

c.垃圾邮件检测(实时检测)


0 0
原创粉丝点击