Impala技术原理

Posted Hadoop大数据之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Impala技术原理相关的知识,希望对你有一定的参考价值。

Impala提高了Apache Hadoop上SQL查询性能,同时保留了熟悉的用户体验,Impala可以通过select、join和聚合函数实时查询存储在HDFS/Hbase上的数据,Impala可使用Hive的元数据、Hive SQL语法、ODBC驱动程序和用户界面,为面向批处理、实时查询提供一个熟悉和统一的平台(出于这个原因,Hive用户可以通过设置更少的资源开销来使用Impala)。摘自官网:http://impala.apache.org/overview.html


一、Impala整体架构

为了避免延迟,Impala绕过MapReduce通过专门的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成)直接访问数据,这与商业并行RDBMS中的数据库非常相似,其查询性能比Hive更快,是一个实时SQL查询引擎。

Impala主要由Impalad、State Store&Catalog和CLI组成。

Impala Daemon:与DataNode运行在同一节点上,由Impalad进程表示,都具有Query Planner、Query Coordinator、 Query Exec Engine三个组件。任何一个节点都能够接收客户端的查询请求(接收查询请求的Impalad为协调者,协调者通过JNI调用Java前端解释SQL查询语句,生成查询计划树,再通过调度器把执行计划分发给具有相应数据的其它Impalad进行执行),读写数据并行执行查询,把结果通过网络流式传送回协调者,由协调者返回给客户端。同时Impalad也与State Store保持连接,用于确定是可以工作的。在Impalad中启动三个ThriftServer:beeswax_server(连接客户端)、hs2_server(借用Hive元数据)、be_server(Impalad内部使用)和一个ImpalaServer服务。

Impala State Store:跟踪集群中的Impalad的健康状态及位置信息,由statestored进程表示,它通过创建多个线程来处理Impalad的注册订阅和与各个Impalad保持心跳连接,各Impalad都会缓存一份State Store中的信息,当State Store离线后(Impalad发现State Store处于离线时,会进入recovery模式,反复注册,当State Store重新加入集群后,自动恢复正常,更新缓存数据),因为Impalad有State Store的缓存仍然可以工作,但会因为有些Impalad失效了,而已缓存数据无法更新,导致把执行计划分配给了失效的Impalad,导致查询失败。

Impala Catalog:服务将SQL语句做出的元数据变化通知给集群的各个节点,catalog服务的物理进程名称是catalogd。由于它的请求会跟statestore daemon交互,所以最好让statestored和catalogd两个进程在同一个节点上。Impala 1.2中加入的catalog服务减少了refresh和invalidate metadata语句的使用。需要注意的是,通过Impala执行的操作带来的元数据变化,有了catalog就不需要再执行refresh和invalidate metadata,但如果是通过Hive进行的建表、加载数据,则仍然需要执行refresh和invalidate metadata来通知Impala更新元数据信息。

CLI:提供给用户查询使用的命令行工具(Impala Shell),同时Impala还提供了Hue、JDBC、ODBC使用接口。


二、与Hive的关系

1)Impala支持的文件格式及压缩编码

文件类型 文件格式 压缩编码 CREATE? INSERT?
Parquet 结构化

Snappy

GZIP

Text 非结构化 LZO

能。

如果建表是没有指定存储类型,默认采用未压缩的text,字段由ASCII编码的0x01字符串分割。

能。

如果使用了LZO压缩,则只能通过Hive建表和插入数据。

Avro 结构化

Snappy

GZIP

Deflate

BZIP2

在Impala 1.4.0或更高版本上支持,之前的版本只能通过Hive来建表

不能。

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用Hive来插入数据。

RCFile 结构化

Snappy

GZIP

Deflate

BZIP2

不能。

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用Hive来插入数据。

SequenceFile 结构化

Snappy

GZIP

Deflate

BZIP2

不能。

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用Hive来插入数据。

2)Impala与Hive共同之处

Hive适合于长时间的批处理分析,而Impala适合于实时交互式查询,可以先使用Hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。

3)Impala查询处理流程

4)Impala为什么比Hive速度快

真正的MPP查询引擎,不是MapReduce;在执行SQL语句时,Impala不会把中间数据写入到磁盘,而是在内存中完成所有处理;使用Impala时,查询任务会马上执行而不是产生MapReduce任务,这会节约大量的初始化时间;智能的算法在多节点分布式执行各个查询步骤,同时避免了sorting和shuffle这两个耗时的阶段;Impala为每个查询产生汇编级的代码,在内存中运行的执行效率更高。

以上是关于Impala技术原理的主要内容,如果未能解决你的问题,请参考以下文章

怎么理解impala(impala工作原理是什么)

Impala原理探索

impala 理论

大数据技术栈

大数据技术栈

6-认证技术原理与应用