概述
流式计算和批量计算分别适用于不同的大数据应用场景:对于先存储后计算,实时性要求不高,同时,数据的准确性、全面性更为重要的应用场景,批量计算模式更合适;对于无需先存储,可以直接进行数据计算,实时性要求很严格,但数据的精确度要求稍微宽松的应用场景,流式计算具有明显优势.流式计算中,数据往往是最近一个时间窗口内的,因此数据延迟往往较短,实时性较强,但数据的精确程度往往较低.流式计算和批量计算具有明显的优劣互补特征,在多种应用场合下可以将两者结合起来使用
.通过发挥流式计算的实时性优势和批量计算的计算精度优势,满足多种应用场景在不同阶段的数据计算要求.
(1) 实时性
大部分数据到来后直接在内存中进行计算并丢弃,只有少量数据才被长久保存到硬盘中
对于时效性特别短、潜在价值又很大的数据可以优先计算.
(2) 易失性
要充分地利用好仅有的一次数据计算机会,尽可能全面、准确、有效地从数据流中得出有价值的信息.
(3) 突发性
数据流的速率呈现出了突发性的特征.前一时刻数据速率和后一时刻数据速率可能会有巨大的差异,这就需要系统具有很好的可伸缩性,能够动态适应不确定流入的数据流,具有很强的系统计算能力和大数据流量动态匹配的能力.
一方面,在突发高数据流速的情况下,保证不丢弃数据,或者识别并选择性地丢弃部分不重要的数据;
另一方面,在低数据速率的情况下,保证不会太久或过多地占用系统资源.
(4) 无序性
比如淘宝找东西的时候突然点物流详情
这就需要系统在数据计算过程中具有很好的数据分析和发现规律的能力,
(5) 无限性
2大数据流式计算关键技术
针对具有实时性、易失性、突发性、无序性、无限性等特征的流式大数据,理想的大数据流式计算系统应该表现出低延迟、高吞吐、持续稳定运行和弹性可伸缩等特性,这其中离不开系统架构、数据传输、编程接口、高可用技术等关键技术的合理规划和良好设计.
2.1系统架构
当前,大数据流式计算系统采用的系统架构可以分为无中心节点的对称式系统架构(如 S4,Puma 等系统)以及有中心节点的主从式架构(如 Storm 系统):
(1) 对称式架构.如图 4 所示:系统中各个节点的功能是相同的,具有良好的可伸缩性;但由于不存在中心节点,在资源调度、系统容错、负载均衡等方面需要通过分布式协议实现.例如,S4 通过 Zookeeper实现系统容错、负载均衡等功能;
(2) 主从式系统架构.如图 5 所示:系统存在一个主节点和多个从节点,主节点负责系统资源的管理和任务的协调,并完成系统容错、负载均衡等方面的工作;从节点负责接收来自于主节点的任务,并在计算完成后进行反馈.各个从节点间没有数据往来,整个系统的运行完全依赖于主节点控制.