zoukankan      html  css  js  c++  java
  • Kylin、druid、presto、impala四种即席查询对比

    一、什么是即席查询

    即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件

    理解:快速的执行自定义SQL(可能无法提前运算和预测)

    重点关注:数据存储格式和架构

    二、Kylin

    1、定义:Apache kylin是一个开源分布式分析引擎、提供Hadoop、Spark之上的SQL

    查询接口及多维分析(OLAP)能力,可以再亚秒内查询巨大的Hive表

    (还可以与BI工具集成ODBC、JDBC、RestAPI、还有自带的Zepplin插件,来访问Kylin服务)

    2、架构

    Kylin架构

    a、REST 服务层:应用程序开发的入口点

    b、查询引擎层:Cube准备就绪后,与系统中的其他组件进行交互,从而向用户返回对应的结果

    c、路由层:将解析的SQL生成的执行计划转换成Cube缓存的查询,cube通过预计算缓存在hbase中,这些操作可以在毫秒级完成,还有一些操作使用的原始查询,这部分延迟较高(麒麟高版本中已删除该层)

    d、元数据管理工具:kylin的元数据管理存储在hbase中

    e、任务引擎:处理所有离线任务:包括shell脚本、javaAPI以及MapReduce任务等等

    三、impala

    1、定义:Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。基于Hive,使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。

    2、架构

    Impala架构

    从上图可以看出,Impala自身包含三个模块:Impalad、Statestore和Catalog,除此之外它还依赖hive Metastore和HDFS

    1) Impalad:
    接收client的请求、Query执行并返回给中心协调节点。
    子节点上的守护进程,负责向statestore保持通信,汇报工作。
    2) Catalog:
    分发表的元数据信息到各个impalad中;
    接收来自statestore的所有请求。
    3) Statestore:
    负责收集分布在集群中各个impalad进程的资源信息、各节点健康状况,同步节点信息;
    负责query的协调调度。

    3、存储和架构

    四、Druid

    1、定义

    Druid 是一个分布式的支持实时分析的数据存储系统,具有以下几个特点

    • 亚秒级 OLAP 查询,包括多维过滤、Ad-hoc 的属性分组、快速聚合数据等等。
    • 实时的数据消费,真正做到数据摄入实时、查询结果实时。
    • 高效的多租户能力,最高可以做到几千用户同时在线查询。
    • 扩展性强,支持 PB 级数据、千亿级事件快速处理,支持每秒数千查询并发。
    • 极高的高可用保障,支持滚动升级。

    实时数据分析是 Apache Druid 最典型的使用场景。该场景涵盖的面很广,例如:

    • 实时指标监控
    • 推荐模型
    • 广告平台
    • 搜索模型

    这些场景的特点都是拥有大量的数据,且对数据查询的时延要求非常高。在实时指标监控中,系统问题需要在出现的一刻被检测到并被及时给出报警。在推荐模型中,用户行为数据需要实时采集,并及时反馈到推荐系统中。用户几次点击之后系统就能够识别其搜索意图,并在之后的搜索中推荐更合理的结果

    五、Presto

    1、定义

    Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。注:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、Oracle的代替品,也不能用来处理在线事务(OLTP)

    应用场景

    Presto支持在线数据查询,包括Hive,关系数据库(MySQL、Oracle)以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。

    Presto主要用来处理响应时间小于1秒到几分钟的场景。

    总结:

    1.Druid:是一个实时处理时序数据的OLAP数据库,因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。

    2.Kylin:核心是Cube,Cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。

    3.Presto:它没有使用Mapreduce,大部分场景下比HIVE块一个数量级,其中的关键是所有的处理都在内存中完成。

    4.Impala:基于内存计算,速度快,支持的数据源没有Presto多。

    5.SparkSQL:是spark用来处理结构化的一个模块,它提供一个抽象的数据集DataFrame,并且是作为分布式SQL查询引擎的应用。它还可以实现Hive on Spark,hive里的数据用sparksql查询。

    6.框架选型:(1)从超大数据的查询效率来看:

    Druid>Kylin>Presto>SparkSQL

    (2)从支持的数据源种类来讲:

    Presto>SparkSQL>Kylin>Druid

  • 相关阅读:
    数学工具WZgrapher
    零线和地线的区别,示波器如何测量市电?
    使用直流稳压电源时的注意事项!
    中文全角和半角输入有什么区别?
    ThinkingRock:使用方法
    2014记首
    如何使用Excel绘制甘特图
    AStyle代码格式工具在source insight中的使用
    STM32F103系列命名规则
    上市公司行情查询站点
  • 原文地址:https://www.cnblogs.com/lilei2blog/p/15509379.html
Copyright © 2011-2022 走看看