impala 架构
Impala是在Hadoop集群中的许多系统上运行的MPP(大规模并行处理)查询执行引擎。有三个主要组件,即Impala daemon(Impalad),Impala Statestore和Impala元数据或metastore。
Impala daemon(Impalad)
他运行在每个安装impala的节点上。他接受来自各种接口的查询,比如impala shell 、hue browser等并处理它们。
每当将查询提交到特定节点上的impalad时,该节点充当该查询的‘协调器节点’。Impalad还在其他节点上运行多个查询。接受查询后,Impalad读取和写入数据文件,并通过将工作分发到Impala集群中的其他Impala节点来并行化查询。当查询处理各种Impalad实例时,所有查询都将结果返回到中央协调节点。
Impala 存储状态
负责检查每个Impalad的运行状况,然后经常将每个Impala Daemon运行状况中继给其他守护程序。这可以在运行Impala服务器或群集中的其他节点的同一节点上运行。
Impala State存储守护进程的名称为存储的状态。impalad将其运行状况报告给Impala State 存储守护程序,即存储的状态。
在由于任何原因导致节点故障的情况下,Statestore将更新所有其他节点关于此故障,并且一旦此类通知可用于其他impalad,则其他Impala守护程序不会向受影响的节点分配任何进一步的查询。
Impala元数据和元存储
这是另一个重要组建。Impala使用传统的Mysql或PGSQL数据库来存储表定义。
每个Impala节点在本地缓存所有元数据。当处理大量数据或许多分区时,获得表特定的元数据可能需要大量时间。因此,本地缓存很重要。
当表定义或表数据更新时,其他Impala后台进程必须通过检索最新元数据来更新其元数据缓存,然后发出查询。
查询处理接口
提供三个接口:
- Impala-shell
- Hue洁面
- ODBC/JDBC
查询执行过程
每当用户用户使用提供的任何接口传递查询时,集群 中的Impalads之一就会接受该查询,此Impalad被视为特定查询的协调程序。
Impala Shell
explain 命令返回给定查询的执行计划
profile 命令显示有关最近查询的低级信息。此命令用于查询的诊断和性能调整。