Impala之03-原理、架构分析(2)

本文深入探讨了Impala的系统架构,强调了State Store在协调impalad实例中的作用,以及其与HDFS NameNode的区别。此外,文章介绍了Impala的优化策略,如向量执行、LLVM编译、IO本地化和Parquet列存,对比了Impala与MapReduce在执行效率和并行计算上的差异。Impala通过避免中间结果写磁盘、使用拉式获取数据等方式提高了交互式SQL查询的性能。
摘要由CSDN通过智能技术生成
上一篇文章《 Impala之02-原理、架构分析(1)》介绍了MPP相关背景知识,本文将深入分析Impala系统架构、原理。

下图展示了Impala的系统架构和查询的执行流程。从图中可以看出,Impala自身包含三个模块:Impalad、Statestore和Catalog,并提供CLI(impala shell)、ODBC、JDBC数据访问接口,除此之外它还依赖Hive Metastore和HDFS。
从Impala的各个模块可以看出,主要查询处理都是在Impalad进程中完成,StateStore和Catalog帮助Impalad完成元数据的管理和负载监控等工作,其实更进一步可以将Query Planner和Query Coordinator模块从Impalad移出单独的作为一个入口服务存在,而Impalad仅负责数据读写和子任务的执行。

客户端可以随便连接到任意一个impalad实例,被连接的impalad实例将充当本次查询的协调者(Ordinator),将查询分发给集群内的其它impalad实例进行并行计算。当所有计算完毕时,其它各个impalad实例将会把各自的计算结果发送给充当 Ordinator的impalad实例,由这个Ordinator实例把结果返回给客户端。每个impalad进程可以处理多个并发请求。在Impalad进行执行优化的时候根本原则是尽可能的数据本地读取,减少网络通信,毕竟在不考虑内存缓存数据的情况下,从远端读取数据需要磁盘->内存->网卡->本地网卡->本地内存的过程,而从本地读取数据仅需要本地磁盘->本地内存的过程,可以看出,在相同的硬件结构下,读取其他节点数据始终本地磁盘的数据读取速度。
Impala执行流程如下:
(1) 由Client发送一个执行SQL到任意一台Impalad的Query Planner
  (2) 由Query Planner 把SQL发向Query Coordinator 
  (3) 由Query Coordinator 来调度分配任务到Impalad的所有节点
  (4) 各个Impalad节点的Query Executor 进行执行SQL工作 
  (5) 执行SQL结束以后,将结果返回给Query Coordinator
  (6) 再由Query Coordinator 将结果返回给Client

Impalad
Imapalad负责接受用户的查询请求,也意味着用户的可以将请求发送给任意一个Impalad进程,该进程在本次查询充当协调者(coordinator)的作用,生成执行计划并且分发到其它的Impalad进程执行,最终汇集结果返回给用户,并且对于当前Impalad和其它Impalad进程而言,他们同时也是本次查询的执行者,完成数据读取、物理算子的执行并将结果返回给协调者Impalad。这种无中心查询节点的设计能够最大程度的保证容错性并且很容易做负载均衡。

正如图中展示的一样,通常每一个HDFS的DataNode上部署一个Impalad进程,由于HDFS存储数据通常是多副本的,所以这样的部署可以保证数据的本地性,查询尽可能的从本地磁盘读取数据而非网络,从这点可以推断出Impalad对于本地数据的读取应该是通过直接读本地文件的方式,而非调用HDFS的接口。为了实现查询分割的子任务可以做到尽可能的本地数据读取,Impalad需要从Metastore中获取表的数据存储路径,并且从NameNode中获取每一个文件的数据块分布。

Impalad服务由三个模块组成:Query Planner、Query Coordinator和Query Executor,前两个模块组成前端,负责接收SQL查询请求,解析SQL并转换成执行计划,交由后端执行,语法方面它既支持基本的操作(select、project、join、group by、filter、order by、limit等),也支持关联子查询和非关联子查询,支持各种outer-join和窗口函数,这部分按照通用的解析流程分为查询解析->语法分析->查询优化,最
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值