通过 Raj Ramasubbu、Francisco Morillo 和 Ismail Makhlouf 于 2024 年 8 月 6 日发布
在 [高级 (300)](https://aws.amazon.com/blogs/big-data/category/learning-
levels/advanced-300/)、、、、、[专家 (400)](https://aws.amazon.com/blogs/big-
data/category/learning-levels/expert-400/)、 和 等相关主题上发布
分享
现代数据驱动应用中,在线分析处理(OLAP)起着关键作用,它作为连接原始数据与用户的抽象层,以实现高效的分析。OLAP以用户友好的结构组织数据,符合共享的业务定义,确保用户在数据变化时也能轻松分析。这一过程结合来自不同数据源的数据,并将其聚合和分组为业务术语和关键绩效指标(KPI)。简而言之,OLAP是现代应用中以用户为中心的数据分析基础,因为它将技术资产转化为业务友好的术语,使用户能够从数据中提取可操作的洞察。
传统的 OLAP数据存储设计用于批处理,以便服务内部业务报告。然而,数据分析的范围正在扩大,越来越多的用户希望自行提取见解。这些用户通常希望直接访问数据并独立分析,而不仅仅依赖于按固定时间间隔提供的计划更新或报告。这导致了实时 OLAP 解决方案的出现,尤其适用于以下用例:
用例 | 描述 |
---|---|
用户面分析 | 将分析嵌入消费者使用的产品或应用中,以获取见解,有时称为数据产品。 |
业务指标 | 提供 KPI、记分卡和与业务相关的基准。 |
异常检测 | 识别异常值或不寻常的行为模式。 |
内部仪表盘 | 提供与组织内各方利益相关的分析。 |
查询 | 根据用户的角色和安全级别提供数据子集,允许他们根据特定需求操作数据。 |
构建实时 OLAP 数据存储所需的能力要求的服务级别协议(SLA)和可扩展性比传统 OLAP 数据存储更严格。因此,需要一个专门的解决方案来满足这些新要求。
是一个开源的实时分布式 OLAP数据存储,旨在满足这些需求,包括低延迟(毫秒级)、高并发(每秒数十万次查询)、近实时数据更新以及处理 PB级数据量。它可以从流式和批量数据源中摄取数据,并将其组织成逻辑表,这些表分布在 Pinot 集群中的多个节点上,从而确保可扩展性。
Pinot 提供与其他现代大数据框架类似的功能,支持 SQL 查询、更新、复杂连接和各种索引选项。
Pinot 在大型企业中经过了大规模测试,服务于超过 ,处理超过 120,000次查询每秒(QPS),每秒摄取超过 150 万个事件,并分析超过 10,000 个业务指标和 50,000 个维度。一个值得注意的用例是用户面 仪表盘,服务于超过 500,000 名用户,提供餐厅表现的即时见解。
Pinot 集群设计为高可用、水平可扩展,并且能够在不影响性能的情况下进行实时配置更改。为此,Pinot被构建为分布式数据存储,以满足上述所有要求,并采用类似 和 的架构设计。
本文将提供一个逐步指南,展示如何在 亚马逊网络服务 (AWS) 上使用 Apache Pinot 和 亚马逊弹性计算云 (Amazon EC2) 构建实时 OLAP 数据存储,并使用 进行近实时可视化。尽管可以将 Apache Pinot用于批处理用例,但本文将重点关注近实时分析用例。
如果您想在将数据发送到 Pinot 之前进行流处理,可以使用 亚马逊托管的 Flink 服务 (MSF) 进行实时复杂转换,包括分窗、连接多个流以及将流与历史数据连接。您可以将 ,以服务于用户面仪表盘。
删除)
在上述图中,目标是将实时数据摄取到 Pinot 中,进行聚合、更新当前数据模型,并实时为用户和应用程序提供 OLAP 查询,在此情况下,用户面是 Tableau 仪表盘。
数据流如下:
为确保高可用性,解决方案为代理和服务器部署 。我们可以使用控制器负载均衡器访问 ,并利用它运行查询和监控 Apache Pinot 集群。
接下来,让我们开始部署此解决方案,并使用 Apache Pinot 和 Tableau 实现近实时可视化。
在开始之前,请确保您具备以下前提条件:
C:\Program Files\Tableau\Drivers
文件夹。对于其他操作系统,请参见 。AWS CDK 是一个开源项目,您可以使用它来使用熟悉的编程语言定义云基础设施。它使用高层次构造来表示 AWS 组件以简化构建过程。在本文中,我们使用 TypeScript 和 Python 来定义云基础设施。
cdk bootstrap aws://<account-id>/<aws-region>
。在以下示例中,我在一个虚构的 AWS 账户 ID 为 123456789000
和 us-east-1
北弗吉尼亚区域中运行引导命令:
bash cdk bootstrap aws://123456789000/us-east-1
删除)
bash git clone https://github.com/aws-samples/real-time-analytics-with- apache-pinot-on-aws cd real-time-analytics-with-apache-pinot-on-aws npm i
bash cdk deploy --parameters IpAddress="<YOUR-IP-ADDRESS-IN-/32-SUBNET-MASK- FORMAT>"
AWS CDK 堆栈的部署大约需要 10-12 分钟。您应该看到一个堆栈部署消息,显示 AWS 对象的创建,后接部署时间、堆栈 ARN和总时间,类似以下屏幕截图:
![CDK删除)
ControllerDNSUrl
的值。![Pinot删除)
现在我们已经配置了所有 AWS 云资源,我们将向 数据流中流式传输一些示例网络事务,并通过 近实时可视化这些数据。
您可以按照以下步骤打开 Tableau 工作簿以进行可视化:
bash jdbc:pinot://<Apache-Pinot-Controller-DNS-Name>?brokers=<Apache-Pinot- Broker-DNS-Name>
Leave a Reply