Impala 架构


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

Impala Architecture

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 存储守护进程的名称是 状态存储 . Impalad 向 Impala State 存储守护进程报告其健康状态,即, 状态存储 .

如果由于任何原因导致节点故障, 状态存储 更新有关此故障的所有其他节点,并且一旦此类通知可供其他节点使用 impalad ,没有其他 Impala 守护程序将任何进一步的查询分配给受影响的节点。

Impala 元数据和元存储


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

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

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

查询处理接口


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

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

  • 色调界面 : 你可以使用 Hue 浏览器处理 Impala 查询。在 Hue 浏览器中,你有 Impala 查询编辑器,你可以在其中键入和执行 impala 查询。要访问此编辑器,首先,你需要登录到 Hue 浏览器。

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

查询执行过程


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

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

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