(一)Impala

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,遇到问题深入研究************************

猜你喜欢

转载自www.cnblogs.com/hanchaoyue/p/13394187.html