zoukankan      html  css  js  c++  java
  • impala基础

    说明:

    impala能够对存储在hdfs,hbase上的数据进行快速的交互式sql查询

    impala与hive使用了统一的存储系统,同样的元数据库,sql语法(hive-sql),odbc驱动和用户交互接口(Hue)

    impala对实时的或者面向批处理的查询提供了一个统一的平台,impala在性能上比hive高出3-30倍

    核心组件

    impala daemon  impala的核心组件是运行在各个节点上面的impalad这个守护进程(Impala daemon),它负责读写数据文件,接收从impala-shell,Hue,JDBC,ODBC等接口发送的查询语句,并进行查询语句和分发工作任务到impala集群的各个节点上,同时负责将本地计算好的查询结果发送给协调节点

    impala Statestore 检查集群各个节点上impala daemon的健康状态,同时不间断的将结果反馈给各个impala daemon

    impala catalog 将sql语句做出的元数据变化通知给集群的各个节点

    hive与impala对比

    相同点

    1.使用相同的存储数据池,都支持把数据存储于HDFS和hbase中

    2.都是用相同的元数据

    3.对sql的解释处理比较相似,都是通过词法分析生成执行计划

    不同点

    1. hive 适合于长时间的批处理查询操作,而impala适合于实时交互式sql查询

    2. hive依赖于mapreduce计算框架,impala把执行计划表现为一颗完整的执行计划,直接分发执行计划到各个impalad执行查询,在执行sql语句的时候,impala不会把中间数据写入到磁盘,而是在内存中完成了所有的处理

    3, hive在执行过程中,如果内存放不下所有数据,则会使用外存以保证查询 能顺利完成,而impala在遇到内存放不下数据时,不会利用外存

    4, 使用impala的时候,查询任务会马上执行而不是生成MapReduce任务,这会节约大量时间

    劣势

    对内存依赖大

    分区超过1W时,性能下降严重

    不提供对序列号和反序列化的支持

    impala执行查询的具体过程:

    1 当用户提交查询前,impala先创建一个负责协调客户端提交的查询的impalad进程 ,该进程会想impalad stata store提交注册订阅信息,state store会创建一个statestored进程,statestored进程通过创建 多个线程来处理impalad的注册订阅信息.

    2 用户通过cli客户端提交一个查询到impalad进程,impalad的query planner对sql语句进行解析,生成解析树;然后planner把这个查询的解析树变成若干个planFragment,发送到query coordinator

    3 coordinator 通过mysql元数据库中获取元数据,从hdfs的名称节点中获取数据 地址,以得到存储这个查询相关数据的数据节点

    4 query executor 通过流式交换中间输出,并由query coordinator汇聚来自各个impalad的结果

    5 coordinator把汇总的结果返回给cli客户端

    coordinator:impalad节点中的协调者模块

    catalog:impala系统中的元数据服务节点

    statestored:impala系统中的消息同步节点

    impalad:impala系统中任务执行节点

  • 相关阅读:
    Python Install for windows X64
    CentOS 7 Install Gitlab CE
    centos 7安装vmtools时提示The path "" is not a valid path to the xxx kernel headers.
    Jenkins install
    gradle 编译 No such property: sonatypeUsername错误解决
    Hololens 开发环境配置(转)
    Krapo 2
    Krapno 1
    dubbo 常见错误
    groupby
  • 原文地址:https://www.cnblogs.com/fengyouheng/p/15413738.html
Copyright © 2011-2022 走看看