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

微信公众号:深广大数据Club

关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;

[如果你觉得深广大数据Club对你有帮助,欢迎赞赏]

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亿次查询。

关注公众号

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181128G0CZSD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券