实时分布式OLAP数据存储区 - Apache Pinot介绍

Posted 深广大数据Club

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时分布式OLAP数据存储区 - Apache Pinot介绍相关的知识,希望对你有一定的参考价值。

Pinot是一个实时分布式OLAP数据存储区,用于LinkedIn以低延迟提供可扩展的实时分析。 它可以从离线数据源(例如Hadoop和平面文件)以及在线源(例如Kafka)中提取数据。 Pinot设计为水平缩放。

它是什么(而不是)?

Pinot非常适合分析不可变只追加数据的用例,这些数据在被摄取事件与可查询事件之间需要低延迟。

关键特性

  • 面向列的数据库,具有各种压缩方案,如运行长度,固定位长度

  • 可插拔索引技术 - 排序索引,位图索引,倒排索引

  • 能够根据查询和段元数据优化查询/执行计划。

  • 从Kafka接近实时抽取/Hadoop批量摄取

  • SQL支持对事实数据进行不同查询,
    例如:selection,aggregation,filtering,group by,order by,distinct queries。

  • 支持多值字段

  • 水平可扩展和容错

由于我们为实现这些目标而做出的设计选择,Pinot存在一些限制:

  • Pinot不是数据库的替代品,即它不能用作真值存储源,不能改变数据

  • 不是搜索引擎的替代品,即全文搜索,不支持相关性

  • 查询不能跨越多个表。

Pinot非常适合查询具有大量维度和指标的时间序列数据。示例 - 以分析方式查询(个人资料视图,广告系列效果等)(过去几周查看了此个人资料,每个广告系列点击了多少广告)。

术语

在我们快速入门之前,让我们来看看术语。

  • Table:表是用于引用相关数据集合的逻辑抽象。它由列和行(Document)组成。表架构定义列名称及其元数据。

  • Segment:逻辑表被划分为多个称为段的物理单元。

Pinot有以下角色/组件:

  • Pinot Controller:管理集群中的节点。职责:
    处理表和段上的所有创建,更新,删除操作。
    计算表及其段到Pinot服务器的分配。

  • Pinot Server:托管一个或多个物理段。职责: -
    分配预先创建的段时,请下载并加载它。如果分配了Kafka主题,则从Kafka中的一组子分区开始使用。
    执行查询并将响应返回给Pinot Broker。

  • Pinot Broker:接受来自客户端的查询并将它们路由到多个服务器(基于路由策略)。所有响应都合并并发送回客户端。

Pinot利用Apache Helix进行集群管理。

Pinot的应用

在LinkedIn,它支持超过50个应用程序,比如谁查看了我的个人资料,谁查看了我的工作,以及更多的应用程序,具有交互级别的响应时间。Pinot每天能接收近10亿的实时数据,每天处理1亿次查询。

关注公众号

以上是关于实时分布式OLAP数据存储区 - Apache Pinot介绍的主要内容,如果未能解决你的问题,请参考以下文章

Apache Druid历险记

Apache Druid历险记

大数据Apache Druid:Druid简单介绍和优缺点

Uber 大规模运行 Apache Pinot实践

apache druid 使用 log4j2 防止日志爆炸(0.13版本)

一文搞懂Hive的存储格式与压缩格式