Impala教程

Impala 架构

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

Impala 守护进程(Impalad)

Impala 守护进程(也称为 impalad)在安装了 Impala 的每个节点上运行。它接受来自impala shell、hue 浏览器等各种接口的查询......并处理它们。
每当查询被提交到特定节点上的 impalad 时,该节点将充当该查询的" 协调器节点"。多个查询由运行的 Impalad 提供在其他节点上也是如此。在接受查询后, Impalad 读取和写入数据文件并通过将工作分配到 Impala 集群中的其他 Impala 节点来并行化查询。当查询在各种 Impalad 实例,它们都将结果返回给中央协调节点。
根据要求,可以将查询提交到专用的 Impalad,或以负载均衡的方式提交到集群中的另一个 Impalad

Impala State Store

Impala 有另一个重要组件,称为 Impala State store,它负责检查每个 Impalad 的健康状况,然后将每个 Impala 守护进程的健康状况频繁地转发给其他守护进程。这可以在运行 Impala 服务器或集群中其他节点的同一节点上运行。
Impala State 存储守护进程的名称是 State storedImpalad 将其健康状态报告给 Impala State 存储守护进程,即 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 界面-您可以使用 Hue 浏览器处理 Impala 查询。在 Hue 浏览器中,您有 Impala 查询编辑器,您可以在其中键入和执行 impala 查询。要访问此编辑器,首先需要登录 Hue 浏览器。 ODBC/JDBC 驱动程序-与其他数据库一样,Impala 提供 ODBC/JDBC 驱动程序。使用这些驱动程序,您可以通过支持这些驱动程序的编程语言连接到 impala,并使用这些编程语言构建在 impala 中处理查询的应用程序。

查询执行过程

每当用户使用提供的任何接口传递查询时,集群中的一个 Impalad 都会接受该查询。此 Impalad 被视为该特定查询的协调器。
在收到查询后,查询协调器使用来自 Hive 元存储的 表架构验证查询是否合适。之后,它从 HDFS 名称节点收集有关执行查询所需的数据位置的信息,并将此信息发送给其他 impalad 以执行查询。
所有其他 Impala 守护进程读取指定的数据块并处理查询。一旦所有守护进程完成其任务,查询协调器就会将结果收集回来并将其交付给用户。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4