什么是流数据?

流数据是以连续、增量方式大量发送的数据,目标是低延迟处理。组织有数千个数据来源,这些数据源通常同时发出消息、记录或数据,大小从几字节到几兆字节(MB)不等。流数据包括位置、事件和传感器数据,公司使用这些数据进行实时分析,以了解其业务的许多方面情况。例如,公司可以通过持续分析社交媒体流中的点击流和客户帖子,然后根据需要及时做出响应,来跟踪公众对其品牌和产品的情感变化。

流数据有哪些特点?

数据流具有以下能够定义它的具体特征。

具有时间意义

数据流中的单个元素包含时间戳。数据流本身可能具有时间敏感性,这种时间敏感性在特定时间间隔之后显著性降低。例如,您的应用程序会根据用户的当前位置推荐餐厅。您必须实时更新用户地理位置数据,否则数据将失去意义。

连续流动

数据流无始无终。它根据需要不断收集数据。例如,只要服务器运行,服务器活动日志就会累积。

唯一

由于时间敏感性,重复传输数据流具有挑战性。因此,准确的实时数据处理至关重要。遗憾的是,在大多数流数据来源中,对重复传输的规定是有限的。

非同质

一些源可能以多种结构化格式流式传输数据,例如 JSON、Avro 和逗号分隔值(CSV),数据类型包括字符串、数字、日期和二进制类型。您的流处理系统应该具有处理此类数据变化的能力。

不完美

源处的临时错误可能会导致流数据中的元素损坏或丢失。由于流的连续性,保证数据一致性可能存在挑战。流处理和分析系统通常包含数据验证逻辑,以缓解或尽量减少这些错误。

为什么流数据很重要?

传统的数据处理系统在中央数据仓库中捕获数据,然后分组或批量处理数据。构建这些系统是为了在分析之前提取数据并设计数据的结构。然而,近年来,企业数据的性质和底层数据处理系统发生了重大变化。

无限的数据量

数据流源生成的数据量可能非常庞大,这使得实时分析以调整流数据的完整性(验证)、结构(进化)或速度(吞吐量和延迟)面临挑战。

先进的数据处理系统

与此同时,云基础设施为计算资源的扩展和使用带来了灵活性。您使用所需要的内容,并且只需为所使用的内容付费。您可以选择在存储流数据之前和之后实时筛选或聚合。流数据架构使用云技术根据需要消耗、丰富、分析和永久存储流数据。

流数据有哪些使用案例?

对于不断生成动态新数据的大多数场景,采用流处理系统是有利的。流处理系统适用于大多数行业和大数据使用案例。

通常情况下,各公司最初都是从简单的应用程序开始,例如收集系统日志以及滚动计算最小值-最大值等初级处理。然后,这些应用程序演变为更复杂的近实时处理。

以下是关于流数据的更多示例。

数据分析

应用程序通过处理数据流生成报告,然后再执行响应操作,例如在关键指标超出一定阀值时发出警报。更复杂的流处理应用程序通过将机器学习算法应用于业务和客户活动数据来提取更深入的见解。

IoT 应用程序

物联网(IoT)设备是流数据的另一个用例。车辆、工业设备和农业机械上的传感器将数据发送到流处理应用程序。该应用程序会监控性能,提前检测潜在缺陷,并自动订购备用零部件,从而防止设备停机。

财务分析

金融机构使用流数据来跟踪股市的实时变化,计算风险价值,并根据股价走势自动重新平衡投资组合。另一个金融用例是使用对流式交易数据的实时推断来检测信用卡交易是否存在欺诈。

实时推荐

房地产应用程序跟踪消费者移动设备的地理位置数据,并实时推荐房地产信息以供查看。类似地,广告、食品、零售和消费者应用程序可以集成实时推荐,以便为客户提供更多价值。

服务保证

您可以实现数据流处理,以跟踪和维护应用程序和设备中的服务级别。例如,一家太阳能发电公司必须维持可满足客户需求的发电量,否则就要支付罚金。该公司实现了一个流数据应用程序,此应用程序可以监控现场的所有太阳能板,并实时调度服务。因此,它可以尽量缩短每个太阳能板的低发电量时间,从而尽量减少与之相关的处罚。

媒体和游戏

媒体发行商从其在线资产流式传输数十亿条点击流记录,使用用户人口统计信息聚合和丰富数据,并优化内容布局。这有助于发行商向受众提供更卓越、更相关的体验。类似地,在线游戏公司使用事件流处理来分析玩家与游戏之间的互动,并提供动态体验来吸引玩家。

风险控制

直播和社交平台实时捕捉用户行为数据,以对用户的财务活动(如充值、退款和奖励)进行风险控制。这些平台会实时监控仪表板,以灵活调整风险策略。

批处理数据和流数据之间的区别是什么?

批处理是指计算机用来周期性地完成大量重复数据作业的方法。您可以使用此方法来计算对不同数据集的任意查询。批处理通常从包含的所有数据中得出计算结果,并允许对大数据集进行深入分析。例如,Amazon EMR 等基于 MapReduce 的系统就是支持批处理作业的平台。

相反,流处理则需要提取一个数据序列,增量式更新指标、报告和汇总统计数据,以响应每个到达的数据记录。这种处理方法更适合实时分析和响应函数。

  批处理

流处理

数据范围

对数据集中的所有或大部分数据进行查询或处理。

对滚动时间窗口内的数据或仅对最近的数据记录进行查询或处理。

数据大小


大批量数据。

单条记录或包含几条记录的微批量数据。

性能

  几分钟至几小时的延迟。

只需大约几秒或几毫秒的延迟。

分析

复杂分析。 简单的响应函数、聚合和滚动指标。

许多组织通过结合使用这两种方法来构建混合模型,以维护实时层和批处理层。例如,您可以首先在 Amazon Kinesis 等流数据平台中处理数据,以提取实时见解。然后,您可以将见解保存到类似 Amazon Simple Storage Service(Amazon S3)的商店中。在商店中,可以为各种批处理用例转换和加载见解。

Amazon Redshift 流式摄取允许用户直接从 Amazon Kinesis Data Streams 中摄取数据,而无需将其存储在 Amazon S3 中。该服务还可以将来自 Amazon Managed Streaming for Apache Kafka(Amazon MSK)的数据提取到 Amazon Redshift 中。

如何处理流数据?

流数据架构包含两种主要类型的组件。

流创建器

流创建器是应用程序和物联网系统中收集数据的软件组件。它们将包含流名称、数据值和序列号的记录传输到流处理器。处理器根据流名称缓冲数据记录或将数据记录进行临时分组。处理器使用序列号跟踪每个记录的唯一位置,并按时间顺序处理数据。

流使用者

流使用者是处理和分析处理器中缓冲的数据流的软件组件。每个使用者都具有相关性、聚合、筛选、采样或机器学习等分析功能。每个流都可以有多个使用者,每个使用者都可以处理多个流。使用者还可以将更改后的数据发送回处理器,以便为其他使用者创建新流。

架构实施

要实施流数据架构,需要具备存储层和处理层。存储层必须支持记录排序和强一致性,以实现对大型数据流的快速、廉价和可重放的读写。处理层负责处理存储层中的数据,基于该数据运行计算,然后通知存储层删除不再需要的数据。

使用流数据所面临的挑战有哪些?

由于数据的性质和数量,需要特别考虑流数据架构。

可用性

流数据应用程序需要一致性、低延迟和高可用性。使用者需要不断地从流中获取新数据以进行处理。创建器的延迟可能会备份系统并导致错误。

可扩展性

原始数据流可能会意外快速激增。例如,在大型体育赛事期间社交媒体帖子数量激增。因此,即使在峰值负载期间,系统也应优先考虑适当的数据处理顺序、可用性和一致性。

持久性

由于数据的时间敏感性,流处理系统必须具有容错功能。否则,数据将在停机或故障时永久丢失。

AWS 如何支持您的流式传输数据要求?

AWS 提供了几种处理流数据的选项。 

Amazon Kinesis

Kinesis 是 AWS 上的流数据平台。它提供了强大的服务,可以轻松加载和分析流数据,同时还允许您根据特殊需要构建自定义流数据应用程序。

Kinesis 提供了三种服务:Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams 和 Amazon Managed Streaming for Apache Kafka(Amazon MSK)。

Kinesis Data Firehose

Kinesis Data Firehose 可以捕获流数据并自动加载到 Amazon Simple Storage Service(Amazon S3)Amazon Redshift。这允许您使用现有的商业智能工具和仪表板执行实时分析。

Kinesis Data Streams

Kinesis Data Streams 能够每小时从成千上万个来源连续捕获和存储数 TB 级数据。它支持您选择的流处理框架,包括 Amazon Kinesis Client Library(KCL)、Apache Storm 和 Apache Spark Streaming。

Amazon MSK

Amazon MSK 是一项完全托管的服务,可让您轻松构建并运行使用 Apache Kafka 处理流数据的应用程序。Apache Kafka 是一个开源平台,用于构建实时流数据管道和应用程序。 

Amazon Redshift

Amazon Redshift 流式摄取允许用户将流数据摄取到数据仓库中,以便实时分析多个 Kinesis 数据流。您可以使用熟悉的 SQL 执行丰富的分析,并轻松创建和管理 ELT 管道。它还允许您以低延迟和高吞吐量处理大量流数据,以便在几秒钟内获得见解。

Amazon EC2 上的其他流数据解决方案

您可以在 Amazon Elastic Compute Cloud(Amazon EC2)Amazon EMR 上安装您选择的流数据平台,并构建自己的自定义流存储层和处理层。这样,您就可以避免基础设施配置的摩擦,并可以访问各种流存储和处理框架。适用于数据存储层的选项包括 Amazon MSKApache Flume。适用于流处理层的选项包括 Apache Spark StreamingApache Storm

立即创建免费 AWS 账户,开始在 AWS 上使用流数据!

AWS 流数据后续步骤

查看其他与产品相关的资源
查看云端分析服务的免费优惠 
注册免费账户

立即享受 AWS 免费套餐。 

注册 
开始在控制台中构建

在 AWS 管理控制台中开始构建。

登录