更新时间:2022-12-14 GMT+08:00

Impala

Impala

Impala直接对存储在HDFS、HBase或对象存储服务(OBS)中的Hadoop数据提供快速、交互式SQL查询。除了使用相同的统一存储平台之外,Impala还使用与Apache Hive相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉且统一的平台。作为查询大数据的工具的补充,Impala不会替代基于MapReduce构建的批处理框架,例如Hive。基于MapReduce构建的Hive和其他框架最适合长时间运行的批处理作业。

Impala主要特点如下:

  • 支持Hive查询语言(HiveQL)中大多数的SQL-92功能,包括 SELECT,JOIN和聚合函数。
  • HDFS,HBase 和对象存储服务(OBS)存储,包括:
    • HDFS文件格式:基于分隔符的text file,Parquet,Avro,SequenceFile和RCFile。
    • 压缩编解码器:Snappy,GZIP,Deflate,BZIP。
  • 常见的数据访问接口包括:
    • JDBC驱动程序。
    • ODBC驱动程序。
    • HUE beeswax和Impala查询UI。
  • impala-shell命令行接口。
  • 支持Kerberos身份认证。

Impala主要应用于实时查询数据的离线分析(如日志分析,集群状态分析)、大规模的数据挖掘(用户行为分析,兴趣分区,区域展示)等场景下。

有关Impala的详细信息,请参见https://impala.apache.org/impala-docs.html

Impala由Impalad、Statestore、Catalog 3个角色组成。

Impala Daemon

impala daemon的进程名为 impalad,是Impala的核心进程。

impalad关键功能如下:

  • 运行在所有的数据节点上。
  • 读写数据文件。
  • 接收来自于impala-shell命令、Hue、JDBC或者ODBC等客户端的查询请求。
  • 可以并行执行来自集群中其他节点的查询请求,将中间结果返回给调度节点。
  • 可以调用节点将结果返回给客户端。

impalad 进程通过持续的和statestore 通信来确认自己所在的节点是否健康 和是否可以接受新的任务请求。

Impala StateStore

负责检查impala的所有进程健康状态管理进程,进程名为statestored,当有Impalad的进程因硬件失败、网络错误、软件原因或者其他原因下线时,StateStore负责通知到其他的impalad进程,避免请求分发到不可用的节点上。

Impala Catalog Service

负责impala的元数据管理,进程名为catalogd,将元数据的变化发送到所有的Impalad进程。当创建表、加载数据或者其他的一些从Hive发起的操作后,impala查询之前需要在impalad上执行 REFRESH 或者 INVALIDATE METADATA 刷新 Catalog 上缓存的元数据信息。如果元数据变化是通过impala执行的,则不需要执行刷新。