impala:sql交互查询的工具
hdfs -- mysql -- hive metastore服务 -- impala
impala与hive的关系:impala与hive是紧耦合的关系,impala需要读取hive的元数据信息,需要hive提供一个Metastore的服务端
impala的优点与缺点:
优点:
速度快
使用C++实现
缺点:内存消耗大,官方推荐每台机器最少128G的内存
impala不提供数据的存储功能,只提供数据的计算功能
impala的架构与查询计划:
impala架构:
impala-server:从节点,计算节点,主要负责执行查询任务的计算,官方建议:impala-server与每一个datanode安装在一起
impala-catalog:主节点,主要存储量元数据信息在两个地方,一个在内存中,一个在磁盘中。impala当中的元数据管理的服务
impala-statestore:主节点,状态存储区,主要存储了一些SQL执行的进度信息,状态信息等
impala的查询计划:分为两个阶段
fronted:使用Java来实现,负责生成我们的查询计划
backend:使用C++来实现,主要负责执行查询
fronted前台的查询计划分为两个阶段
第一个阶段:生成单机版的查询计划
第二个阶段:生成分布式的查询计划,将单机版的查询计划,发送到其他机器上
SQL语句的优化,其实就是查询计划的优化,单机版的优化策略与分布式策略一致