Impala – 架构

Impala – 架构


Impala 是一个 MPP(大规模并行处理)查询执行引擎,运行在 Hadoop 集群中的多个系统上。与传统存储系统不同,impala 与其存储引擎分离。它具有三个主要组件,即 Impala 守护进程(Impalad)、Impala Statestore 和 Impala 元数据或元存储。

Impala 架构

Impala 守护进程( Impalad )

Impala 守护进程(也称为impalad)在安装了 Impala 的每个节点上运行。它接受来自各种接口的查询,如impala shell、hue 浏览器等……并处理它们。

每当向特定节点上的 impalad 提交查询时,该节点将充当该查询的“协调器节点”。多个查询也由运行在其他节点上Impalad提供服务接受查询后,Impalad读取和写入数据文件,并通过将工作分配到 Impala 集群中的其他 Impala 节点来并行化查询。当在各种Impalad 实例上处理查询时,它们都会将结果返回给中央协调节点。

根据需求,可以将查询提交到专用的Impalad或以负载平衡的方式提交到集群中的另一个Impalad

Impala 州立商店

Impala 还有一个重要的组件叫做 Impala State store,它负责检查每个Impalad的健康状况,然后频繁地将每个 Impala 守护进程的健康状况转发给其他守护进程。这可以在运行 Impala 服务器或集群中其他节点的同一节点上运行。

Impala State 存储守护进程的名称是State storedImpalad将其健康状态报告给 Impala State store 守护进程,即State stored

如果节点由于任何原因发生故障,Statestore 会更新所有其他节点有关此故障的信息,并且一旦其他impalad可以使用此类通知,则其他 Impala 守护程序不会向受影响的节点分配任何进一步的查询。

Impala 元数据和元存储

Impala 元数据和元存储是另一个重要组件。Impala 使用传统的 MySQL 或 PostgreSQL 数据库来存储表定义。表和列信息以及表定义等重要细节存储在称为元存储的集中式数据库中。

每个 Impala 节点都在本地缓存所有元数据。在处理大量数据和/或许多分区时,获取特定于表的元数据可能需要大量时间。因此,本地存储的元数据缓存有助于立即提供此类信息。

当表定义或表数据更新时,其他 Impala 守护进程必须通过检索最新元数据来更新其元数据缓存,然后再针对相关表发出新查询。

查询处理接口

为了处理查询,Impala 提供了三个接口,如下所示。

  • Impala-shell – 使用 Cloudera VM 设置 Impala 后,您可以通过在编辑器中键入命令impala-shell来启动 Impala shell 我们将在接下来的章节中更多地讨论 Impala shell。

  • Hue interface – 您可以使用 Hue 浏览器处理 Impala 查询。在 Hue 浏览器中,您有 Impala 查询编辑器,您可以在其中键入和执行 impala 查询。要访问此编辑器,首先需要登录 Hue 浏览器。

  • ODBC/JDBC 驱动程序– 就像其他数据库一样,Impala 提供 ODBC/JDBC 驱动程序。使用这些驱动程序,您可以通过支持这些驱动程序的编程语言连接到impala,并使用这些编程语言构建在impala 中处理查询的应用程序。

查询执行程序

每当用户使用提供的任何接口传递查询时,集群中的一个 Impalad 都会接受该查询。此 Impalad 被视为该特定查询的协调器。

收到查询后,查询协调器使用Hive 元存储中表模式验证查询是否合适之后,它从 HDFS 名称节点收集有关执行查询所需的数据位置的信息,并将此信息发送到其他 impalad 以执行查询。

所有其他 Impala 守护进程读取指定的数据块并处理查询。一旦所有守护进程完成它们的任务,查询协调器就会将结果收集回来并将其传递给用户。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁