impala

impala

Impala

  • impala是参照谷歌新三篇论文Dremel的开源实现。Impala是Cloudera公司主导开发并开源。基于Hive并使用内存进行计算,兼顾数据仓库,具有实时、批处理、多并发等优点。是使用CDH的首选PB级大数据实时查询(OLAP)分析引擎。有测试表明,Impala的性能较Hive提高了3~90倍。

Impala与hive

  • impala和hive的关系
    • impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断完善中。
    • 直接选用impala代替hive,是因为impala快
      1. 基于内存计算,能够对PB级数据进行交互式实时查询、分析。
      2. 摒弃了MR计算改用C++编写,有针对性的硬件优化,例如使用SSE指令。
      3. 兼容HiveSQL,无缝迁移。
      4. 通过使用LLVM来统一编译运行时代码,避免为了支持通用编译而带来的不必要的开销。
      5. 支持sql92标准,并且有自己的解析器和优化器。
      6. 具有数据仓库的特性,对hive原有数据做数据分析。
      7. 使用了支持Data locality的/O调度机制。
      8. 支持列式存储。
      9. 支持jdbc/odbc远程访问。
      • impala不足
    1. 基于内存进行计算,对内存依赖性较大
    2. 改用C++编写,以为着对C++普通用户不可见。
    3. 基于Hive,与Hive共存亡。
    4. 实践中impala的分区超过一万,性能严重下降,容易出现问题。
    5. 稳定性不如Hive

Impala架构

  • 三大进程
    • impalad
    • statestored
    • catalogd
      • impala daemon(服务名称 impalad) -N个实例
      • 接收client、hue、jdbc或odbc请求、query执行返回给中心协调节点。
      • 子节点上的守护进程,负责向statestore保持通信,汇报工作。
      • Statestore daemon (服务名称statestored) -1个实例
      • 负责收集分布在集群中各个impalad进程的资源信息,各个节点健康状况、同步节点信息
      • 负责query的调度
      • 对于一个正常运转的集群,并不是一个关键进程。
      • Catalog daemon(服务名称catalogd) - 1个实例
      • 把impala表的metadata分发到各个impalad中
      • 接收来自statestore的所有请求

Impala监控

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×