憨
1. impala的核心概念
2. impala的架构原理
3. impala的安装和使用
1. impala介绍
1.1 impala概述
- impala是Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互SQL查询功能。
- 官方测试性能比hive快10到100倍,其sql查询比sparksql还要更加快捷,号称是当前大数据领域
最快的查询sql工具。
- 基于hive使用内存计算,兼顾数据仓库,具有实时、批处理、多并发等优点
impala使用hive的元数据,完全在内存中计算
1.2 impala与hive的关系
- impala是基于hive的大数据分析查询引擎,直接使用hive的元数据metadata
- impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法
- 安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务
1.3 impala优点
1、基于内存进行计算,能够对PB级数据进行交互式实时查询、分析、只要你内存足够大
2、摒弃了MR的计算,改用C+来实现,有针对性的硬件优化
在底层对硬件进行优化,LLVM统一编译运行:编译器,比较稳定,效率高
3、具有数据仓库的特性,可对hive数据直接做数据分析
4、支持列式存储
可以和hbase整合,因为hive可以整合hbase
5、支持DataLocal
数据本地化:无需数据移动,减少数据的传输
6、支持JDBC/ODBC远程访问
1.4 impala缺点
1、基于内存计算,对内存依赖性较大
2、基于hive,与hive共存亡,紧耦合
3、稳定性不如hive
2 impala基础架构
2.1 impala体系架构
图XXXXXXXXXXXXXXXXXX
Catalog State Store
Impala Daemon Impala Daemon
Catalog:同步不同的hive元数据信息
impala集群的主节点
- 从hive元数据库中同步元数据,分发表的元数据信息到各个impala daemon中
- 接收来自statestore的所有请求,告知哪些impala节点是健康的
补充:
- impala1.2中加入的Catalog服务减少了refresh和invalidate metadata语句的使用
- 在之前的版本中,当在某个节点上执行了create database、drop database、create table
或者drop table语句之后,需要在其它的各个节点上执行命令invalidate metadata 来确保元数据信息的更新。
- 同样的,当你在某个节点上执行了inset语句,在其它节点上执行查询时就得先执行
refresh table_name这个操作,这样才能识别到新增的数据文件。
- 需要注意的是,通过impala执行的操作带来的元数据变化,有了Catalog就不需要再执行
refresh和invalidate metadata,但如果是通过hive进行的建表、加载数据,则仍然
需要执行refresh 和invalidate metadata来通知impala更新元数据信息。
State Store:对Impala Daemon做一些健康监控
impala集群的主节点,为impalaDaemon提供查询服务,并周期性地检查impala进程状态
补充:
- 如果某个impala节点由于硬件错误、软件错误或者其他原因导致离线,statestored
就会通知其他的节点,避免其他节点再向这个离线的节点发送请求。
- 由于statestored是当集群节点有问题的时候起通知作用,所以它对impala集群并不是
有关键影响的
- 如果statestored没有运行或者运行失败,其他节点和分布式任务会照常运行,只是说当节点
掉线的时候集群会变得没那么健壮。当statestored恢复正常运行时,它就又开始与其他
节点通信并进行监控。
impala
- impala的核心组件是运行在各个节点上面的impala这个守护进程
- 接收Client请求、query执行并返回给中心协调节点
- 子节点上的守护进程,负责向statestore保持通信,汇报工作
执行计算
- 因内存依赖大,所以最好不要和impala的其他组件放到同一节点
- 最好是与hdfs的datanode节点部署在一起,提高查询计算(数据本地化)
考虑集群性能问题,一般将statestore与Catalog放在同一节点上,因两者之间要
进行大量的通信。
2.2 impala查询过程
客户端连接impala daemon上,它的内部有三个组件:
query palnner(查询解析器)
将我们的字符串sql语句解释成为执行计划
query coordinator(中心协调节点)
coordinator从state store请求其他的impala daemons,并把查询分发给其他的impala daemon
query Executor(查询执行器)
做查询工作的就是executor
*************jdbc impala,会用ok,遇到问题深入研究************************
憨