Impala
架构
架构图:

对图中各个名词说明
- Impalad
由Impalad进程表示,Impala集群中有若干Impalad服务,接收到用户请求的Impalad为Coordinator角色(Coordinator角色接收到请求之后通过JNI调用Java解释SQL查询语句,生成查询计划树,再通过调度器将执行计划分发给具有相应数据的其他Impalad服务),当其他Imapalad计算出结果之后返回给Coordinator,最终由Coordinator返回给客户端。这其中Impalad分发任务的时候会先看自己缓存中或State store服务器中注册的哪些健康Impalad服务 - Impala State Store
跟踪集群中的Impalad的健康状态及位置信息,它通过创建多个线程来处理Impalad的注册订阅与Impalad保持心跳连接,各个Impalad都会缓存一份State STore中的信息,当Store离线后(Impalad会进入recovery模式,进行反复注册心跳,知道store上线之后注册成功,并更新缓存),Impalad中会根据缓存继续工作,但会因为有些Impalad失效了,自身的缓存并不是最新的,因此会造成查询失败。 - Catalog
保存元数据,Impalad服务指定DDL语句时,有Catalog代替执行,且将更新有State Store广播
元数据存储
Impala的元数据需要存储在HMS(Hive MetaStore)中,因此Impala天然具有数据库的层级概念(这不同于Presto,Presto在同一个Catalog中是否支持多Schema取决于所连接的数据源)
所支持的数据源
- HDFS
- Hive
- Kudu
- Amazon S3
- ADLS
- Isilon Storage
网友评论