这里主要介绍了关于Impala如何管理其元数据的原理,方便日后对其进行性能及可拓展性调优。
Impala架构impala组成架构图如下:
- CatalogServer(Catalogd):负责元数据的获取和DDL的执行
- Statestore Server(Statestored):负责消息/元数据的广播
- ImpalaDaemon(Impalad):负责查询的接收和执行
- coordinator only:查询的接收,计划的生成,查询的调度
- executor only:数据的读取和计算
- coordinator and executor:
注意:生产中impalad建议做好角色分离,每个impalad要么是coordinator要么是excutor。按1:50比例配置。
Impala工作原理impala外部元数据来源:
1、来自Hive metastore的目录信息
2、来自NameNode的文件元数据
Impala的元数据缓存在catalogd和各个Coordinator角色的Impalad中。Catalogd中的缓存是最新的,各个Coordinator都缓存的是Catalogd内元数据的一个复本。架构示意图如下:
元数据由Catalogd向外部系统获取,并通过 Statestored 传播给各个 Coordinator。
coordinator缓存的元数据:
- Table:Schema(表名,字段名,字段类型,分区字段等)、各列统计信息
- Hdfs Table:分区目录、文件路径、文件分块及复本位置、各分区的增量统计信息
- KuduTable: 分区列及分区类型(Hash、Range)
- HbaseTable: 各列族名
- View: 具体的查询语句
- https://impala.apache.org/docs/build/html/topics/impala_dedicated_coordinator.html



