什么是流式处理
流式处理是一种编程范式,将数据流或时间序列视为计算的中心输入和输出对象。它通过限制并行计算来简化并行软件和硬件。对于给定的数据流,一系列操作(内核函数)将应用于流中的每个元素。流式处理特别适合具有以下三个关键特征的应用程序:计算密集型(每个I/O或全局内存引用有大量算术运算)、数据并行性(相同的函数可应用于输入流中的所有记录)和数据局部性(数据产生一次、读取一次或两次,之后不再读取)。流式处理可以比通用处理器提供显著的性能改进,对报告的加速超过10倍。它通常用于实时数据处理、物联网监控、欺诈检测和媒体优化等应用,能够以高速缓冲、处理、转换和存储不断移动的流数据,同时持续更新指标、报告和汇总统计信息。与批处理不同,流式处理专注于滚动时间窗口内的最新数据,更适合需要即时洞察和行动的实时用例。
流式处理的工作原理是什么

数据流作为核心输入输出
流式处理将数据流或时间序列事件视为计算的核心输入和输出对象。数据流中的每个元素都会经过一系列操作(内核函数)的处理。这种范式通过限制并行计算来简化并行软件和硬件。

管道化内核函数
内核函数通常以管道化的方式应用于数据流中的每个元素。编译器能够利用内核函数和数据之间已知的依赖关系,以透明的方式自动分配内存,从而最大限度地减少与外部内存交互带来的带宽损失。

低延迟实时分析
流式处理涉及持续接收数据记录序列,并根据每个到达的数据记录增量更新指标、报告和汇总统计信息。与批处理相比,流式处理更适合实时分析和响应功能,因为它需要以秒或毫秒为单位的低延迟。
流式处理有哪些优势
流式处理具有多方面的优势,使其成为处理连续动态数据的理想选择。以下是流式处理的主要优势:

实时性和低延迟
与批量处理相比,流式处理更适合实时分析和响应功能。它可以在数据到达时立即处理,并在几秒或几毫秒内提供结果,而批量处理则需要几分钟到几小时的时间。这使得流式处理能够快速响应动态数据,满足实时需求。

高可扩展性
原始数据流可能会出现急剧且意外的增长,流式处理系统应该能够在峰值负载下正确排序数据、保证可用性和一致性。与批量处理相比,流式处理具有更高的可扩展性,能够处理大规模并发数据流。

高可用性和容错性
由于数据的时间敏感性,流式处理系统必须具有容错能力,确保在出现故障或中断时不会丢失数据。它们通常具有高可用性,能够持续不间断地处理数据流。

并行处理和优化
流式处理通过限制可执行的并行计算来简化并行软件和硬件,暴露数据依赖关系,从而允许编译器工具完全自动化和优化芯片上的管理任务。这降低了软件复杂性,消除了手动DMA管理的需求。

高效执行
流式处理特别适用于具有高计算强度、数据并行性和数据局部性的应用程序,如信号处理、图形和媒体应用程序。与通用处理相比,它可以更高效地执行这些应用程序。
如何使用流式处理
流式处理是一种编程范式,将数据流或事件序列视为计算的核心输入和输出对象。本文将介绍如何使用流式处理。

流式处理的实现
实现流式处理涉及两个主要组件:流生产者和流消费者。流生产者从应用程序和物联网系统收集数据,并将包含流名称、数据值和序列号的记录传输到流处理器。处理器将按流名称缓冲或分组数据记录,并使用序列号按时间顺序处理数据。 流消费者是处理和分析缓冲在处理器中的数据流的软件组件。它们具有相关性、聚合、过滤、采样或机器学习等分析功能。每个流可以有多个消费者,每个消费者可以处理多个流。消费者还可以将更改后的数据发送回处理器,以创建供其他消费者使用的新流。

流式处理架构
实现流式数据架构需要存储层和处理层。存储层必须支持记录排序和强一致性,以实现对大型数据流的快速、廉价和可重放的读写。处理层从存储层消费数据、运行计算并通知存储层删除不再需要的数据。
如何实现高效的流式处理
流式处理是一种高效的数据处理范式,能够显著提高性能和效率。以下是实现高效流式处理的几个关键原则:

优化数据访问模式
流式处理器的三层数据访问模式(本地寄存器文件、共享流寄存器文件和外部内存)使得将临时数据远离慢速内存变得很容易,从而提高了效率和节省了能源。

注意流式处理的局限性
流式处理不适用于所有应用程序,因为通信延迟可能是一个重大问题,尤其是对于小数据集。对于小数据流,当更改内核代价很高时,"短流效应"也会带来性能损失。

处理高速高容量数据流
流数据源的数据量可能非常大,使得实时分析难以调节流数据的完整性、结构和吞吐量。流数据架构需要利用云技术来消费、丰富、分析和永久存储所需的流数据。

确保高可用性、低延迟和容错能力
流数据应用程序需要一致性、低延迟和高可用性,因为消费者不断处理来自流的新数据。即使在高峰负载期间,系统也应优先考虑正确的数据排序、可用性和一致性。

实现合适的存储和处理层
存储层必须支持记录排序和强一致性,以实现快速、廉价和可重播的大数据流读写。处理层负责从存储层消费数据、运行计算并通知存储层删除不再需要的数据。

利用实时过滤、聚合和高级分析
流数据架构应提供实时过滤或存储前后聚合的选项,以及应用机器学习算法获得更深入见解的能力。
流式处理有哪些应用场景

实时数据分析
流式处理应用可以通过对业务和客户活动数据流进行分析和机器学习,生成实时报告和警报。例如,金融机构利用流式处理跟踪实时股市变化,计算风险指标,并根据股价波动自动重新平衡投资组合。

欺诈检测
通过实时分析信用卡交易数据,流式处理可用于欺诈检测。

服务级别协议监控
通过实时跟踪性能指标(如太阳能公司的发电量),流式处理可最小化违约罚款。

物联网监控
物联网设备(如车辆、工业设备和农业机械)产生的传感器数据需要持续监控,以检测问题、优化性能并自动响应(如订购备件)。流式处理可以实现这一目标。

实时推荐
在房地产、广告和零售等行业,客户数据会被分析以提供个性化优惠。流式处理可用于实时推荐。

媒体和游戏
媒体和游戏公司使用流式处理分析用户交互,优化内容传递。
流式处理与批处理的区别是什么

处理方式的差异
流式处理将数据视为连续的事件流,每个事件到达时就立即进行处理。与之相反,批处理会在一段时间内收集数据,然后将整个批次数据一次性处理。流式处理更适合需要高计算强度、数据并行性和数据局部性的应用,如图像、视频和信号处理。而批处理则更适合需要所有记录数据的应用,如涉及总计的计算。

应用场景的差异
流式处理更适合实时分析和需要低延迟响应的功能,如社交媒体分析等实时应用。而批处理则更适合复杂分析和可以在非高峰时段运行的任务,如每月会计等高容量、重复性数据作业。流式处理管道持续运行但计算需求较低,批处理管道运行频率较低但需要高计算能力。

系统架构的差异
流式处理系统旨在为数据流公开并行处理能力,并依赖流算法进行高效实现。而批处理通常使用现代批处理框架来提供高容量处理的容错能力和可扩展性。
流式处理的挑战有哪些

数据带宽挑战
与传统处理器不同,流式处理技术不依赖硬件缓存,而是由编译器和硬件显式管理数据移动。因此,下一代大规模并行处理器在流式处理中面临的主要挑战是数据带宽,而不是计算资源。这可能会导致数据移动成为瓶颈。

通信延迟挑战
尽管流式处理可以从流式处理器中合理地期望获得一个数量级的加速,但并非所有应用程序都能从中获益。实际上,通信延迟是最大的问题,对于小数据集,使用流式处理器效果往往适得其反。

可用性和可扩展性
流式处理应用程序需要一致性、低延迟和高可用性。来自生产者的延迟可能会导致系统备份和错误。原始数据流也可能会迅速增加,因此系统应该即使在高峰负载下也能正确排序数据、保证可用性和一致性。

数据质量
处理流式数据的另一个挑战是处理不完美的数据性质。来源的临时错误可能会导致损坏或丢失元素,从而使保证数据一致性变得具有挑战性。

数据结构挑战
流式处理中的一个挑战是数组结构(AoS)和结构数组(SoA)的问题,这对程序员来说可能很具有挑战性。合理组织数据结构对于充分利用流式处理的并行性至关重要。

内核切换开销
改变内核是一个代价高昂的操作,对于小流会产生罚款,这种行为被称为"短流效应"。为了避免这些问题,已经部署了"über shaders"和"纹理地图集"等技术。

持久性和容错
由于数据的时间敏感性,流式处理系统必须具有容错能力,否则在中断或故障时数据将永远丢失。流式处理系统通常包括数据验证逻辑来缓解这些错误。
流式处理的发展历史是什么

开展流式处理的基础工作
流式处理起源于20世纪90年代,麻省理工学院教授Bill Dally领导的研究小组开展了流式处理的基础工作。

首个流处理器芯片
1996年Dally加入斯坦福大学继续该项研究,获得DARPA、一家芯片制造商和一家半导体公司的资助,开发名为"Imagine"的首个流处理器芯片及编译器工具。

图形处理器设计
Imagine项目的成功展示了流式处理的优势,启发了一些公司的图形处理器设计以及一些公司的处理器。

商业化流式处理技术
2004年Dally团队获得许可证,在加州成立了一家公司,商业化流式处理技术。

推出首款流式处理产品
2006年该公司推出首款产品,此后推出其他产品,面向高端DSP市场如视频会议、多功能打印机和数字视频监控设备。

商业化进程暂时中断
2009年该公司停止运营,流式处理技术的商业化进程暂时中断。
欢迎加入亚马逊云科技培训中心
欢迎加入亚马逊云科技培训中心
-
快速上手训练营
-
账单设置与查看
-
动手实操
-
快速上手训练营
-
第一课:亚马逊云科技简介
本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。
亚马逊云科技技术讲师:李锦鸿第二课:存储与数据库服务
您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。
亚马逊云科技资深技术讲师:周一川第三课:安全、身份和访问管理
在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。
亚马逊云科技技术讲师:马仲凯 -
账单设置与查看
-
-
动手实操
-