Apache Impala 架构


Impala 是一个大规模并行查询引擎,可在现有 Hadoop 集群中的数百台服务器上运行。与查询处理和底层存储引擎紧密耦合的标准关系数据库管理系统不同,它与后者分离。
Impala 提高了 Apache Hadoop上 SQL 查询的效率,同时保持了熟悉的用户界面。Impala 允许您使用 SELECT、JOIN 和聚合函数实时查询数据,无论是存储在 HDFS 还是 Apache HBase 中。
Impala 还共享 Apache Hive 的元数据、SQL 语法 (Hive SQL)、ODBC 驱动程序和用户界面 (Hue Beeswax),使其成为用于批处理和实时查询的熟悉且连贯的平台。(因此,Hive 用户可以用最少的设置时间使用 Impala。)
 
Impala 部署中有三个服务:

  1. Impala 守护进程( impalad) 服务负责接收客户端查询和管理它们在集群中的执行,以及代表其他 Impala 守护进程执行单个查询片段。当 Impala 守护进程以第一个角色管理查询执行时,它被称为查询的协调者。另一方面,所有 Impala 守护进程都是对称的,它们可以扮演任何角色。此属性有助于负载平衡和容错。集群中每个运行数据节点进程的系统——底层 HDFS 部署的块服务器——都有一个 Impala 守护进程,因此每台机器上通常有一个 Impala 守护进程。Impala 现在可以利用数据局部性并从文件系统读取块,而无需连接到网络。Impala 的元数据发布-订阅服务Statestore(statestored)将集群范围的元数据分发到所有 Impala 进程。
  2. Impala 的目录存储库和元数据访问网关是Catalog 守护进程(catalogd)。Impala 守护进程可以使用 catalogd 将 DDL 命令发送到外部目录存储,例如 Hive Metastore。statestore 用于将更改分发到系统目录。
  3. 查询处理接口:与 Impala 通信的接口是 Hive Metastore、JDBC/ODBC 客户端、Impala-shell 和 Hue Web 用户界面。