Streaming Platform

[url]Streaming Platform - Apache Kafka - CWIKI.US

参考一下 AWS 的说明有关流数据:

流数据的优势

对于持续生成动态新数据的大多数场景,采用流数据处理是有利的。这种处理方法适用于大多数行业和大数据使用案例。通常情况下,各公司一开始都是从简单的应用程序开始,例如收集系统日志以及进行滚动计算最小值-最大值等初级处理。然后,这些应用程序逐渐发展为需要完成更加复杂的近实时处理。最初,应用程序可能通过处理数据流生成简单的报告,然后再执行一些简单的响应操作,例如在关键指标超出一定阀值时发出警报。最终,这些应用程序会执行形式更加复杂的数据分析,如应用机器学习算法,还会从数据中提取更深入的信息。经过一段时间后,开始应用复杂的流事件处理算法,如利用时间窗口衰减算法查找最近的热门电影,进一步丰富了信息内容。

流数据示例

交通工具、工业设备和农业机械上的传感器将数据发送到流处理应用程序。该应用程序再监控性能,提前检测任何潜在缺陷,自动订购备用部件,从而防止设备停机。
一家金融机构实时跟踪股市波动,计算风险价值,然后根据股票价格变动自动重新平衡投资组合。
一家房地产网站跟踪客户移动设备中的一部分数据,然后根据其地理位置实时建议应走访的房产。
一家太阳能发电公司必须维持可满足客户需求的发电量,否则就要支付罚金。该公司实施了一个流数据应用程序,用以监控电力系统中的所有电池板,并实时调度服务,从而最大限度缩短了每个电池板的低产能期,也因此减少了相关的罚款支出。
一家媒体出版商对数十亿的在线内容点击流记录进行流处理,利用有关用户的人口统计信息汇总和丰富数据,并优化网站上的内容投放,从而实现关联性并为受众提供更佳的体验。
一家网络游戏公司收集关于玩家与游戏间互动的流数据,并将这些数据提供给游戏平台,然后再对这些数据进行实时分析,并提供各种激励措施和动态体验来吸引玩家。

比较批处理与流处理

在讨论流数据之前,有必要比较一下流处理和批处理。批处理可用于计算对不同数据集的任意查询。它一般用于计算从所含的所有数据得到的结果,并实现对大数据集的深入分析。例如,Amazon EMR 等基于 MapReduce 的系统就是支持批处理任务的平台。相反,流处理则需要摄取一个数据序列,增量式更新指标、报告和汇总统计结果,以响应每个到达的数据记录。这种处理方法更适合实时监控和响应函数。

批处理 流处理
数据范围 对数据集中的所有或大部分数据进行查询或处理。 对滚动时间窗口内的数据或仅对最近的数据记录进行查询或处理。
数据大小
大批量数据。 单条记录或包含几条记录的微批量数据。
性能 几分钟至几小时的延迟。 只需大约几秒或几毫秒的延迟。
分析 复杂分析。 简单的响应函数、聚合和滚动指标。

很多组织纷纷结合使用两种方法,从而构建一种混合模式,并同时维持实时处理层和批处理层。数据首先经由流数据平台(如 Amazon Kinesis)处理,以提取实时信息,然后保存到 S3 等存储中,数据可在此进行转换和加载,以用于各种批处理使用案例。

使用流数据所面临的挑战

流数据处理需要两个层:存储层和处理层。存储层需要支持记录定序和高度一致性,以便以快速、便宜且可重复的方式读取和写入大型数据流。处理层负责处理存储层中的数据,基于该数据运行计算,然后通知存储层删除不再需要的数据。您还必须为存储层和处理层制定可扩展性、数据持久性和容错规划。因此,出现了可提供构建流数据应用程序所需的基础设施的多种平台,其中包括 Amazon Kinesis Streams、Amazon Kinesis Firehose、Apache Kafka、Apache Flume、Apache Spark Streaming 和 Apache Storm。