实时OLAP(一) Apache Pinot介绍

一、业务需求

       微博万亿级别数据,实时摄取,实时数据多维分析,低延时响应

二、调研实时OLAP

        clickhouse, druid,pinot,感觉这篇文章写得不错:https://medium.com/@leventov/comparison-of-the-open-source-olap-systems-for-big-data-clickhouse-druid-and-pinot-8e042a5ed1c7

       我们觉得pinot更适合我们的需求,于是对pinot进行深入调研,包括部署,数据摄取,数据查询等

三、pinot介绍

       https://pinot.apache.org

       https://github.com/apache/incubator-pinot

       Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。

       Pinot 特别适合这样的数据分析场景:查询具有大量维度和指标的时间序列数据,分析模型固定,数据只追加以及低延迟,以及分析结果可查询。

      关键特性:

  • 面向列的数据库,具有各种压缩方案,如运行长度,固定位长度
  • 可插拔索引技术 - 排序索引,位图索引,倒排索引
  • 能够根据查询和段元数据优化查询/执行计划。
  • 几乎实时从流中摄取和从Hadoop批量摄取
  • SQL类似于支持选择,聚合,过滤,分组依据,对数据进行不同查询的语言。
  • 支持多值字段
  • 水平可扩展和容错

      Pinot存在一定的局限性:

  • Pinot不是数据库的替代品,即它不能用作真值存储源,不能改变数据
  • 不是搜索引擎的替代品,即全文搜索,不支持相关性
  • 查询不能跨越多个表。

Pinot架构

实时OLAP(一) Apache Pinot介绍_第1张图片

         Pinot核心组件及组件的主要功能

         1、controller

               管理集群中的节点

                对Table和Segment的创建、更新和删除操作的处理

                计算Table和Segment在server上的分配

          2、broker  

                 它接收客户端的查询请求,并且将路由到多个服务上(根据路由策略), 合并接收的查询结果并返回给客户端。               

           3、server 它保存一个或者多个物理的Segment,职责包括:

                 当被分配一个预先创建的segment,下载并且装载这个Segment,当被分配一个Kafka Topic,从kafka的partion的一个子集中消费数据

                 执行查询请求并将结果返回给broker

你可能感兴趣的:(云计算大数据)