Impala--组件与架构(一)

Impala

介绍

  • 支持HDFS,HBASE数据的高性能,低延迟的交互式SQL查询。
  • 基于hive使用内存计算,兼顾数据仓库,具备批处理,实时,多并发的优势。

用人话翻译一下数据库

  • 高性能:基于内存。
  • 低延迟:不会低到ms级别。
  • 基于hive:hive相关模块有元数据模块,保存了海量数据文件内容的元数据;compile模块将SQL转化为MR;HIVE去执行SQL任务,无非是直接调用HDFS的API,又或者转化为MR去处理数据。元数据这个模块是很优秀的,hive的元数据模块其实就是以表的数据模型抽象了全部的文件数据集。除了表的数据模型,也能够用流式,dataset等等模型,模型不一样,操做方法不一样。基于hive只是基于hive的元数据模块。
  • 使用内存:hive是转成MR的,MR又是基于磁盘的,全部中间结果都须要落磁盘。磁盘的优势就是稳定可靠,中间有步骤失败了,还能够从上一步磁盘结果重来,impala基于内存计算,中间全部结果都不落地磁盘,因此一旦中间有错误,任务直接失败,从头再来。
  • 兼顾数仓:最好不要,数仓就是存放历史静态数据的,不须要你有多快,须要稳定。
  • 与hive的关系:二者是共用元数据模块,背对背的关系,HIVE用MR和HDFS的API,Impala直接操做HDFS

image.png

优势

  • 基于内存
  • 无需转化为MR,直接读取HDFS
  • C++编写,速度快
  • 兼容HiveSQL
  • 具备数仓特性,可直接对hive直接进行数据分析
  • 支持DataLocal(将元数据库全部元数据预加载到内存)
  • 支持列式存储(行式存储查询时不见得查全部字段,列式减小IO)

缺点

  • 对内存依赖大(CDH公司推荐放ImpalaServer的机器内存128G)
  • 彻底依赖于HIVE,稳定性不如HIVE
  • C++编写,开源性,移植性不太好(os:C++太难了=_=)
  • 实际作时,分区超过1W,性能降低严重(基于内存计算,粒度不一样,分组太多太吃内存)

架构&核心组件

impala是个无主模型
image.png架构

  • StateStore Daemon:收集分布在集群中各个impalad进程的资源信息(心跳),各节点健康情况,同步节点信息,一个实例。
  • Catalog Daemon:从hive元数据库拉取元数据(不是实时的,启动拉一次,其余更新手动拉取),交给statestore分发表的元数据信息到各个impalad进程(因此最好部署在statestore节点上);若是有DDL操做,impalad心跳发给statestore,statestore再发给Catalog,statestore广播给impalad,更新每一个节点的元数据,保持一致性,同时Catalog更新给hive,一个实例。
  • Impala Daemon:接收client,hue,jdbc,odbc请求,query执行并返回给中心协调节点,也是子节点的守护进程,负责向statestore汇报结果,保持通讯,多个实例,和DataNode一比一。
相关文章
相关标签/搜索