Impala面试题

Impala概述

impala提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询功能

基于Hive,使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。

Impala特点

  • 基于内存进行计算,能够对PB级数据进行交互实时查询、分析
  • 无需转换为MR,直接读取HDFS数据,大大降低了延迟
  • C++编写
  • 兼容HiveSQL
  • 具有数据仓库的特性,可以对hive数据直接做数据分析
  • 支持数据本地化
  • 支持列式存储
  • 支持JDBC远程访问

Impala劣势

  • 对内存依赖大
  • 分区超过1w时,性能严重下降
  • 不提供对序列化和反序列化的支持

Impala架构

核心组件
Statestore Daemon
  • 负责收集分布在集群中各个impalad进程的资源信息、各节点的健康状况,同步节点信息
  • 负责query的调度
Catalog Daemon
  • 从hive元数据库中同步元数据,分发表的元数据信息到各个impalad中
  • 接收来自statestore的所有请求
Impala Daemon(impalad)

具有数据本地化的特性所以放在DataNode上

  • 接收client、hue、jdbc的请求,query执行并返回给中心协调节点
  • 子节点上的守护进程,负责向statestore保持通信,汇报工作

Impala daemon执行计算。因内存依赖大,所以最好不要和impala的其他组件放到同一节点

考虑到集群性能问题,一般将StateStoreDaemon与Catalog Daemon放在同一个节点,因为之间要做通信

整体架构流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmpxhBZL-1595220092582)(C:\Users\mwf\Desktop\找工作\复习知识点\Impala面试题.assets\image-20200712121218788.png)]

  1. 客户端向某个impalad发送一个query(SQL)

    impalad会与StateStore通信,确定impala集群哪些impalad是否健康可用;与NameNode得到数据元数据信息;每个impalad通过catalog可知道表元数据信息

  2. impalad将query解析为具体的执行计划planner,交给当前机器coordinator(中心协调节点)

    Impalad通过jni,将query传送给java前端,由java前端完成语法分析和生成执行计划(Planner),并将执行计划封装成thrift格式返回执行计划分为多个阶段,每一个阶段叫做一个(计划片段)PlanFragment,每一个PlanFragment在执行时可以由多个Impalad实例并行执行(有些PlanFragment只能由一个Impalad实例执行)

  3. Coordinator根据执行计划Planner,通知本机Executor执行,并转发给其他有数据的Impalad用Executor执行

  4. impalad的executor之间可进行通信,需要一些数据的处理

  5. 各个impalad的executor执行完成后,将结果返回给中心协调节点

  6. 由中心协调节点Coordinator将汇聚的查询结果返回给客户端

Impala与hive的异同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ugIPWrO-1595220092584)(C:\Users\mwf\Desktop\找工作\复习知识点\Impala面试题.assets\image-20200712124044857.png)]

数据存储

都把数据存储于HDFS

元数据

使用相同的元数据

SQL解释处理

使用通过词法解析生成执行计划

执行计划

hive:依赖于MapReduce框架,如果一个Query被翻译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个query的执行时间

impala:把执行计划表现为一颗完整的可执行计划树,可以更加自然的分发执行计划到各个impalad执行查询,保证impalad有更好的并发性和避免不必要的中间sort和shuffle

数据流

hive:采用推的方式,每一个计算节点结算完成后将数据主动推给后续节点

impala:采用拉的方式,后续节点通过getNext向前面节点获取数据

内存使用

hive:在执行过程中如果内存放不下所有数据,则会使用外存

Impala:在遇到内存放不下数据时,当前版本1.0.1是直接返回错误

调度

hive:依赖于hadoop的能错能力,做到恨到的failover

impala:不存在任何容错逻辑,如果执行过程中发生故障,则直接返回错误

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值