发布于: Jul 29, 2022

 

Amazon Kinesis 流式数据处理服务凭借强大的实时处理功能、无需预置或管理任何基础设施、按实际用量付费这些特点,可以帮助企业快速构建流式数据处理、分析平台,获得对企业业务运营的洞察,并帮助企业实时响应业务和客户的需求,加速企业的数字化转型

 

在《2020 Planning Guide for Data Management》报告中 Gartner 给出了构建流式数据分析平台需要考虑的因素,其中包括:

  • 以敏捷的方式构建
  • 协调数据
  • 流数据质量和排序
  • 故障恢复
  • 动态扩展
  • 减少延迟

这些因素在 Kinesis Data Analytics 服务中都有体现。

 

“以敏捷的方式构建流处理管道,从而可以动态添加新的源和目标。考虑使用带有内置警报,监视和元数据管理支持的流水线和编排平台。”

这一点,Kinesis 服务和其他 Amazon Web Services 服务一样都得到了很好的实现。利用 CloudFormation/Amazon Web Services CDK 实现 Amazon Web Services 资源编排可以将基础架构通过代码来管理,以安全且可重复的方式来部署 Kinesis Data Analytics 应用程序;

监控是保持 Kinesis Data Analytics 应用程序的可靠性、可用性和性能的重要组成部分。可以使用 Cloudwatch 来监控 Amazon Kinesis Data Analytics,并使用 CloudWatch Logs Insights 查询日志流以查找特定的事件或错误;

CloudTrail 可以将 Kinesis Data Analytics 的所有 API 调用作为事件捕获。通过使用 CloudTrail 收集的信息,可以确定向 Kinesis Data Analytics 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。

 

“由于源系统可能有不同的数据格式,因此需要将数据统一为通用格式。可以将源数据转换为 CSV 文件,然后进一步将其优化为列格式,例如 Apache ORC 和 Apache Parquet。”

在 Kinesis Data Analytics 中,可以使用 Amazon Lambda 函数预处理数据,将记录从其他格式(如 KPL 或 GZIP)转换为 JSON 或 CSV 数据格式。进一步还可以利用其他 Amazon Web Services 服务进行数据扩充,包括使用 S3 中的数据丰富 Stream 数据。

 

“提取管道需要考虑到迟到的数据和缺失值。还需要数据分析以识别敏感数据并应用公司策略。”

Kinesis Data Analytics 的应用程序内部流包含名为 ROWTIME 的特殊列。ROWTIME 反映的时间戳是指 Amazon Kinesis Data Analytics 从流式传输源中读取后将记录插入到第一个应用程序内部流的时间。除了 ROWTIME 之外,在实时流式应用程序中还存在事件时间、接收时间、处理时间。对于基于时间的窗口式查询,可以选择上述时间戳。同时 Kinesis Data Analytics  支持滚动窗口方式、滑动窗口方式还是交错窗口方式处理记录。交错窗口可以减少延迟或无序数据。

 

“通过确保在发生故障时可恢复状态来保持操作的原子性。如果摄取和负载是由不同的管道执行的,则需要恢复两者之间的数据流。需要对到达数据(可查询实时分析)进行隔离,以隔离从下游策展数据存储中缓存的数据。

”Kinesis Data Analytics 在无服务器模式中运行,通过执行自动迁移来处理主机降级、可用区可用性以及其他与基础设施相关的问题。同时,Kinesis Data Analytics 使用检查点 checkpoints 和快照 snapshots 来自动备份运行应用程序的状态。检查点是用于在 Amazon Kinesis Data Analytics for Java Applications 中实施容错功能的方法。检查点是运行的应用程序的最新备份,用于从意外的应用程序中断或故障转移中恢复。快照是手动创建和管理的应用程序状态备份。通过使用快照,可以调用 UpdateApplication 将应用程序还原到以前的状态。

 

“动态扩展以适应源和汇数量的增加。因此,当负载减少时,请按比例缩小资源。研究允许自动缩放以保持最佳吞吐量以保留所需延迟的产品。”

Kinesis Data Analytics 可对应用程序进行弹性扩展,以适应数据吞吐量和查询复杂性。您仅需为运行您的流式处理应用程序所使用的资源付费,无需担心预置基础设施,也无需为空闲容量付费。Kinesis Data Analytics 以 Amazon Kinesis 处理单元 (KPU) 的形式预置容量。一个 KPU 为您提供 1 个 vCPU 和 4GB 内存。

对于 Java 应用程序可以使用 API 中的 Parallelism 和 ParallelismPerKPU 参数,控制用于 Kinesis Data Analytics 的 Java 应用程序任务(例如从源中读取或执行运算符)的并行执行。Parallelism 使用该属性设置 Apache Flink 应用程序并行度。所有操作符、源和接收器以该并行度执行。ParallelismPerKPU 使用该属性设置应用程序的每个 KPU 的并行任务数。

对于 SQL 应用程序可以指定输入并行机制参数来增加源映射到的应用程序内部流的数量,从而以更高效的方式使用 KPU。

 

“利用临时存储(缓存),并通过将数据缓存在本地区域来应对数据量意外增加的情况。”

Amazon Kinesis Data Analytics 提供亚秒级处理延迟,可以高效的进行流式数据分析。

 

Amazon Kinesis 流式数据处理服务凭借强大的实时处理功能、无需预置或管理任何基础设施、按实际用量付费这些特点,可以帮助企业快速构建流式数据处理、分析平台,获得对企业业务运营的洞察,并帮助企业实时响应业务和客户的需求,加速企业的数字化转型。

 

相关文章