Pinot 是一个实时分布式 OLAP 数据存储,专为提供超低延迟分析而构建,即使在极高吞吐量下也是如此。 它可以直接从流数据源(例如 Apache Kafka 和 Amazon Kinesis)中摄取,并使事件可用于即时查询。 它还可以从 Hadoop HDFS、Amazon S3、Azure ADLS 和 Google Cloud Storage 等批处理数据源中摄取。

系统的核心是列式存储,具有多种智能索引和预聚合技术以实现低延迟。 这使得 Pinot 最适合面向用户的实时分析。 同时,Pinot 也是其他分析用例的绝佳选择,例如内部仪表板、异常检测和临时数据探索。

imaged2e9d8d08d769846.png

Pinot 由 LinkedIn 和 Uber 的工程师构建,旨在无上限地扩大规模。 根据集群的大小和预期的每秒查询 (QPS) 阈值,性能始终保持不变。

面向用户的实时分析

面向用户的分析或面向站点的分析是您将直接向产品的最终用户公开的分析工具和应用程序。 在面向用户的分析应用程序中,将用户群视为应用程序的所有最终用户。 这个应用程序可以是社交网络应用程序,也可以是食品配送应用程序。 Apache Pinot不仅仅让少数分析师进行离线分析,也不仅仅让公司中的少数数据科学家在运行临时查询。 而是所有最终用户,在他们的个人设备上接收个性化分析(想想每秒 1000 次查询中的 100 次)。 这些查询是由应用程序触发的,而不是由人编写的,因此规模将与该应用程序上的活跃用户一样多(百万事件/秒)

而且,这是针对所有可能的最新数据,也就是实时分析。 对于一些企业来说,“昨天”可能是很久以前的事了,他们迫不及待地等待 ETL 和批处理作业。 他们想要的是数据一生成就进行分析(考虑延迟<1s)。

为什么面向用户的实时分析如此具有挑战性?

想要这样一个使用实时事件的面向用户的分析应用程序听起来很棒。 但是,支持这样的分析工作负载对底层基础设施意味着什么?

image4fead8cf0deb73b5.png

  1. 此类应用程序需要尽可能新鲜的数据,因此系统需要能够实时摄取数据并使其可用于实时查询。
  2. 此类应用程序的数据往往是事件数据,用于广泛的操作,来自多个来源,因此数据以非常高的速度进入并且往往是高维度的。
  3. 查询由与应用程序交互的最终用户触发 - 每秒查询数以十万计,具有任意查询模式,延迟预计以毫秒为单位,以获得良好的用户体验。
  4. 并进一步做到以上所有,同时具有可扩展性、可靠性、高可用性和低成本服务。

哪些公司使用Pinot

Pinot 起源于 LinkedIn,它目前拥有最大的部署之一,为 50 多个面向用户的应用程序提供支持,例如查看我的个人资料、人才分析、公司分析、广告分析等等。 在 LinkedIn,Pinot 还用作可视化和监控 10,000 多个业务指标的后端。

随着 Pinot 越来越受欢迎,几家公司现在正在生产中使用它来支持各种分析用例。 可以在此处找到使用 Pinot 的公司的详细列表。

Apache Pinot基本特性

  • 具有各种压缩方案的面向列的数据库,例如运行长度、固定位长度
  • 可插拔索引技术 - 排序索引、位图索引、倒排索引、星树索引、布隆过滤器、范围索引、文本搜索索引(Lucence/FST)、Json 索引、地理空间索引
  • 能够基于查询和段元数据优化查询/执行计划
  • 从 Kafka、Kinesis 等流中近乎实时地摄取,从 Hadoop、S3、Azure、GCS 等来源批量摄取
  • 支持对数据进行选择、聚合、过滤、分组、排序、不同查询的类 SQL 语言
  • 支持多值字段
  • 水平可扩展和容错

我在什么时候可以用到它呢?

Pinot 旨在以低延迟执行 OLAP 查询。 它适用于需要对不可变数据进行快速分析(例如聚合)的环境,并且可能需要实时数据摄取。

面向用户的分析产品

Pinot 是面向用户的分析产品的完美选择。 Pinot 最初是在 LinkedIn 构建的,用于支持丰富的交互式实时分析应用程序,例如 Who Viewed Profile、Company Analytics、Talent Insights 等。 UberEats Restaurant Manager 是面向客户的分析应用程序的另一个示例。 在 LinkedIn,Pinot 为 50 多种面向用户的产品提供支持,每秒摄取数百万个事件,并以毫秒延迟每秒处理 10 万次以上的查询。

业务指标的实时仪表板

Pinot 还可用于执行典型的分析操作,例如对大规模多维数据进行切片和切块、向下钻取、上卷和旋转。 例如,在 LinkedIn,Pinot 为数以千计的业务指标提供仪表板。 可以连接各种 BI 工具,例如 Superset、Tableau 或 PowerBI,以可视化 Pinot 中的数据。

异常检测

除了在 Pinot 中可视化数据之外,还可以运行机器学习算法来检测 Pinot 中存储的数据的异常情况。 有关如何使用 Pinot 进行异常检测和根本原因分析的更多信息,请参阅 ThirdEye

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐