什么是流数据?
流数据是指由数千个数据源持续生成的数据,通常也同时以数据记录的形式发送,规模较小(约几千字节)。流数据包括多种数据,例如客户使用您的移动或 Web 应用程序生成的日志文件、网购数据、游戏内玩家活动、社交网站信息、金融交易大厅或地理空间服务,以及来自数据中心内所连接设备或仪器的遥测数据。
此类数据需要按记录或根据滑动时间窗口按顺序进行递增式处理,可用于多种分析,包括关联、聚合、筛选和取样。借助此类分析得出的信息,公司得以深入了解其业务和客户活动的方方面面,例如服务使用情况(用于计量/计费)、服务器活动、网站点击量以及设备、人员和实物的地理位置,从而迅速对新情况做出响应。例如,公司可以持续分析社交媒体流,从而跟踪公众对其品牌和产品的看法的变化,并在必要时及时做出响应。
流数据的优势
对于持续生成动态新数据的大多数场景,采用流数据处理是有利的。这种处理方法适用于大多数行业和大数据使用案例。通常情况下,各公司一开始都是从简单的应用程序开始,例如收集系统日志以及进行滚动计算最小值-最大值等初级处理。然后,这些应用程序逐渐发展为需要完成更加复杂的近实时处理。最初,应用程序可能通过处理数据流生成简单的报告,然后再执行一些简单的响应操作,例如在关键指标超出一定阀值时发出警报。最终,这些应用程序会执行形式更加复杂的数据分析,如应用机器学习算法,还会从数据中提取更深入的信息。经过一段时间后,开始应用复杂的流和事件处理算法,如利用时间窗口衰减算法查找最近的热门电影,进一步丰富了信息内容。
流数据示例
- 交通工具、工业设备和农业机械上的传感器将数据发送到流处理应用程序。该应用程序再监控性能,提前检测任何潜在缺陷,自动订购备用部件,从而防止设备停机。
- 一家金融机构实时跟踪股市波动,计算风险价值,然后根据股票价格变动自动重新平衡投资组合。
- 一家房地产网站跟踪客户移动设备中的一部分数据,然后根据其地理位置实时建议应走访的房产。
- 一家太阳能发电公司必须维持可满足客户需求的发电量,否则就要支付罚金。该公司实施了一个流数据应用程序,用以监控电力系统中的所有电池板,并实时调度服务,从而最大限度缩短了每个电池板的低产能期,也因此减少了相关的罚款支出。
- 一家媒体出版商对数十亿的在线内容点击流记录进行流处理,利用有关用户的人口统计信息汇总和丰富数据,并优化网站上的内容投放,从而实现关联性并为受众提供更佳的体验。
- 一家网络游戏公司收集关于玩家与游戏间互动的流数据,并将这些数据提供给游戏平台,然后再对这些数据进行实时分析,并提供各种激励措施和动态体验来吸引玩家。
比较批处理与流处理
在讨论流数据之前,有必要比较一下流处理和批处理。批处理可用于计算对不同数据集的任意查询。它一般用于计算从所含的所有数据得到的结果,并实现对大数据集的深入分析。例如,Amazon EMR 等基于 MapReduce 的系统就是支持批处理作业的平台。相反,流处理则需要提取一个数据序列,增量式更新指标、报告和汇总统计数据,以响应每个到达的数据记录。这种处理方法更适合实时监控和响应函数。
批处理 | 流处理 | |
数据范围 | 对数据集中的所有或大部分数据进行查询或处理。 | 对滚动时间窗口内的数据或仅对最近的数据记录进行查询或处理。 |
数据大小 | 大批量数据。 |
单条记录或包含几条记录的微批量数据。 |
性能 | 几分钟至几小时的延迟。 | 只需大约几秒或几毫秒的延迟。 |
分析 | 复杂分析。 | 简单的响应函数、聚合和滚动指标。 |
很多组织纷纷结合使用两种方法,从而构建一种混合模式,并同时维持实时处理层和批处理层。数据首先经由流数据平台(如 Amazon Kinesis)处理,以提取实时信息,然后保存到 S3 等存储中,数据可在此进行转换和加载,以用于各种批处理使用案例。
使用流数据所面临的挑战
在 AWS 上使用流数据
Amazon Web Services (AWS) 提供多种处理流数据的选项。您可以利用由 Amazon Kinesis 提供的托管流数据服务,也可以在 Amazon EC2 上的云中部署和管理您自己的流数据解决方案。
Amazon Kinesis 是一种在 AWS 上流处理数据的平台,提供多种强大的服务,让您可以轻松地加载和分析流数据,另外还让您能根据具体需求来构建自定义流数据应用程序。它提供了三种服务:Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK)。
另外,您还可以在 Amazon EC2 和 Amazon EMR 上运行其他流数据平台,如 Apache Flume、Apache Spark Streaming 和 Apache Storm。
Amazon Kinesis Data Streams
通过 Amazon Kinesis Data Streams,您可以构建自己的自定义应用程序来处理或分析流数据,以满足特定需求。它能够每小时从成千上万个来源连续捕获和存储数 TB 的数据。然后,您可以构建应用程序来处理来自 Amazon Kinesis Data Streams 的数据,以支持实时控制面板、生成警报、实施动态定价和广告等等。Amazon Kinesis Data Streams 支持您选择的流处理框架,包括 Kinesis Client Library (KCL)、Apache Storm 和 Apache Spark Streaming。
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose 是将流数据加载到 AWS 的最简单方式。它可以捕获流数据并将其自动加载到 Amazon S3 和 Amazon Redshift,借助当前正在使用的现有商业智能工具和控制面板实现近乎实时的分析。借助它,您可以快速实施 ELT 方法,并迅速从流数据中受益。
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Amazon MSK 是一项完全托管的服务,可让您轻松构建并运行使用 Apache Kafka 处理流数据的应用程序。Apache Kafka 是一个开源平台,用于构建实时流数据管道和应用程序。借助 Amazon MSK,您可以使用原生 Apache Kafka API 填充数据湖、将所做更改流式传入和传出数据库,以及为机器学习和分析应用程序提供支持。
Amazon EC2 上的其他流数据解决方案
您可以在 Amazon EC2 和 Amazon EMR 上安装您选择的流数据平台,并构建自己的流存储层和处理层。通过在 Amazon EC2 和 Amazon EMR 上构建自己的流数据解决方案,您可以避免基础设施预置冲突,还可以使用多种流存储和处理框架。适用于流数据存储层的选项包括 Amazon MSK 和 Apache Flume。适用于流处理层的选项包括 Apache Spark Streaming 和 Apache Storm。
后续步骤
- 详细了解 Amazon MSK
- 详细了解 Amazon Kinesis
- 了解 AWS 大数据服务
- 查看 Amazon EMR 上的 Apache Spark 页面
- 使用 Amazon Kinesis Data Firehose 和 Amazon Redshift,只需单击几下,即可将您的流数据转换为深入分析