【计算】大数据分析引擎-Impala(十一)

Posted by Kaka Blog on October 19, 2018

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架构

img

  • 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资源管理

静态资源池

静态服务池用于将服务彼此隔离,使一个服务上的高负载对其他服务产生的影响有限。

img

动态资源池

img

资源管理相关的参数

  • REQUEST_POOL: 将查询语句提交到不同的资源池
  • MEM_LIMIT: 解决Impala对复杂查询的内存消耗估算不准确的问题
  • EXPLAIN_LEVEL: 设置执行计划显示的详细程度
  • COMPUTE STATS: 收集统计信息,执行计划信息不准可以收集一下统计信息
    • compute stats tablename;#收集表的统计信息
    • show table stats tablename;#显示表的统计信息
    • show column stats tablename;#显示列的统计信息

实操

在Impala节点上执行:

impala shell

img