Impala概念和架构
Impala简介
- 基于Google的Dremel为原型的查询引擎,Cloudera公司推出,提供对HDFS、HBase数据的高性能、低延迟的交互式
SQL查询
功能。 - Impala服务器是一个分布式,大规模并行处理(
MPP
)的服务引擎。 - 基于
Hive
使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。
SMP与MPP
- SMP(Symmetric Multiprocessing)-对称多处理器结构
- 系统中所有资源(CPU、内存、I/O等)都是共享的
- 日常中常见的pc,笔记本就是SMP架构
ls /sys/devices/system/node/# 如果只看到一个node0 那就是smp架构
- MPP(Massive Parallel Processing)-海量并行处理
- 由多个SMP服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个SMP服务器(每个SMP服务器称节点)通过节点互联网络连接而成,每个节点只访问自己的本地资源(内存、存储等),是一种完全无共享(Share Nothing)结构,因而扩展能力最好
Impala架构
- Statestore Daemon
- 负责收集分布在集群中各个Impala进程的资源信息、各节点健康状况,同步节点信息。
- 负责query的调度。
- Catalog Daemon
- 分发表的元数据信息到各个Impala中
- 接收来自Statestore的所有请求
- Impala Daemon
- 接收client、Hue、JDBC或ODBC请求,Query执行并返回给中心调度节点子节点上的守护进程,负责向statestore保持通信,汇报工作。
Impala优势
- 不需要把中间结果写入磁盘,省掉大量的I/O开销
- 省掉MR作业启动的开销,直接通过相应的服务进程来进行作业调度
- 用C++实现,做了针对性的硬件优化
- 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少网络开销。
Impala资源管理
静态资源池
静态服务池用于将服务彼此隔离,使一个服务上的高负载对其他服务产生的影响有限。
动态资源池
资源管理相关的参数
- REQUEST_POOL: 将查询语句提交到不同的资源池
- MEM_LIMIT: 解决Impala对复杂查询的内存消耗估算不准确的问题
- EXPLAIN_LEVEL: 设置执行计划显示的详细程度
- COMPUTE STATS: 收集统计信息,执行计划信息不准可以收集一下统计信息
- compute stats tablename;#收集表的统计信息
- show table stats tablename;#显示表的统计信息
- show column stats tablename;#显示列的统计信息
实操
在Impala节点上执行:
impala shell