📅  最后修改于: 2020-11-30 04:58:30             🧑  作者: Mango
Impala是一个MPP(大规模并行处理)查询执行引擎,可在Hadoop集群中的许多系统上运行。与传统存储系统不同,Impala与存储引擎脱钩。它具有三个主要组件,即Impala守护程序(Impalad) ,Impala状态存储和Impala元数据或元存储。
Impala守护程序(也称为impalad )在安装Impala的每个节点上运行。它接受来自各种接口(例如impala shell,色相浏览器等)的查询并进行处理。
每当将查询提交到特定节点上的impalad时,该节点就充当该查询的“协调器节点”。 Impalad还可以在其他节点上运行多个查询。接受查询后, Impalad读取和写入数据文件,并通过将工作分配给Impala群集中的其他Impala节点来并行化查询。在各种Impalad实例上处理查询时,所有查询都会将结果返回到中央协调节点。
根据需求,查询可以提交给专用的Impalad ,也可以以负载平衡的方式提交给集群中的另一个Impalad 。
Impala具有另一个重要组件,称为Impala状态存储,该组件负责检查每个Impalad的运行状况,然后将每个Impala守护程序的运行状况经常中继到其他守护程序。它可以在Impala服务器或群集中其他节点正在运行的同一节点上运行。
Impala状态存储守护进程的名称为状态存储。 Impalad报告其健康状况,帕拉州店守护程序,即国家储存。
如果由于任何原因导致节点故障, Statestore会更新所有其他有关此故障的节点,并且一旦此类通知可用于其他impalad ,其他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守护程序都读取指定的数据块并处理查询。一旦所有守护程序完成其任务,查询协调器就会将结果收集回去并将其交付给用户。