龙空技术网

MPP架构之Apache Impala

功夫熊猫Todd 748

前言:

现在我们对“impalaapache开源”大致比较重视,朋友们都需要了解一些“impalaapache开源”的相关资讯。那么小编在网摘上汇集了一些有关“impalaapache开源””的相关内容,希望各位老铁们能喜欢,看官们快快来学习一下吧!

什么是MPP?

MPP是massively parallel processing(大规模并行处理)缩写,是由程序中的多个处理器进行的协同计算处理,每个处理器使用其自己的操作系统和内存。通常,MPP处理器使用某些消息传递接口进行通信。在某些实现中,同一应用程序上最多可以使用200个或更多处理器。数据路径的“互连”设置允许在处理器之间发送消息。通常,MPP的设置更为复杂,需要考虑如何在处理器之间划分公用数据库以及如何在处理器之间分配工作。 MPP系统也称为“loosely coupled(松耦合)”或“shared nothing(无共享)”系统。其中Presto和Apache Impala都是MPP架构的具体实现。这篇文章将介绍Apache Impala及其具体结构。

什么是Impala?

Impala是一个MPP(大规模并行处理)SQL查询引擎,用于处理存储在Hadoop集群中的大量数据。它是一个用C++和Java编写的开源软件。与其他用于Hadoop的SQL引擎相比,它提供了高性能和低延迟。

换句话说,Impala是性能最高的SQL引擎(具有类似RDBMS的经验),它提供了最快的方法来访问Hadoop分布式文件系统中存储的数据。

为什么选择Impala?

Impala通过利用诸如HDFS,HBase,Metastore,YARN和Sentry之类的标准组件,将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可伸缩性和灵活性相结合。

与Hive等其他SQL引擎相比,借助Impala可以使用SQL更加快速的查询HDFS或HBase中的数据。Impala可以读取Hadoop使用的几乎所有文件格式,例如Parquet,Avro和RCFile。

impala使用与Apache Hive相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax),为面向批处理或实时查询提供了熟悉且统一的平台。

与Apache Hive不同,Impala并非基于MapReduce算法。它实现了基于守护进程的分布式体系结构,该守护进程负责在同一台计算机上运行的查询执行的所有方面

因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive更快。

Impala架构

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

Impala daemon(Impalad)

Impala daemon在安装Impala的每个节点上运行。它接受来自各种接口的查询并进行处理。

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

根据需求,可以将查询提交给专用的Impalad,也可以以负载均衡的方式提交给集群中的另一个Impalad。

Impala State Store

Impala还有另一个重要的组件称为Impala状态存储,该组件负责检查每个Impalad的运行状况,然后将每个Impala守护程序的运行状况频繁地中继到其他守护程序。它可以在运行Impala服务器或群集中其他节点的同一节点上运行。

Impala状态存储守护进程的名称是状态存储。 Impalad将其运行状况报告给Impala状态存储守护程序,即状态存储状态。

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

Impala Metadata & Meta Store

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

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

更新表定义或表数据时,其他Impala守护程序必须在对有关表发出新查询之前,通过获取最新的元数据来更新其元数据缓存。

标签: #impalaapache开源 #apacheimpala结构