Impala系列之一:Impala 架构原理及简单使用

Impala 是由 Cloudera 公司推出的,提供了对 HDFS、Hbase 数据的高性能、低延迟的交互式 SQL 查询功能。Impala 基于 Hive,使用内存计算,具有实时、批处理、多并发等优点。

一、Impala 构成

Impala 采用了对等式架构,所有角色之间是对等的,没有主从之分。主要由三个服务构成:Catalog、Statestore 和 Impalad。

  • Catalog:元数据服务。从 hive metastore 中同步元数据信息,并分发到各个 impalad 服务。

  • Statestore:状态存储服务。Impala 对称的节点架构要求所有的节点必须都能够接收并执行查询,而 Statestored 正是负责以上这些功能,即将所有元信息及其修改同步到各个 Impalad。

  • Impalad:担任协调者和执行者双重角色。作为协调者,接收客户端查询请求并对其进行词法分析、语法分析、生成逻辑查询计划以及物理查询计划,之后将各个执行片段(segement)分配给其他 Impalad 上执行;作为执行者,Impalad 也会执行其他 Impalad 给其分配的任务,主要就是对本地 HDFS 和 HBase 里的部分数据进行操作。

二、Impala 运行原理

  1. 用户提交查询前,Impala 先创建一个负责协调客户端提交的查询的 Impalad 进程,该进程会向 Statestore 提交注册订阅信息,Statestore 会创建一个 Statestored 进程,Statestored 进程通过创建多个线程来处理 Impalad 的注册订阅信息。

  2. 客户端提交一个查询到 Impalad 进程,Impalad 的 Query Planner 对 SQL 语句进行解析,生成解析树;然后 Planner 把这个查询的解析树变成若干 PlanFragment,发送到 Query Coordinator。

  3. Coordinator 通过从元数据库中获取元数据,从 HDFS 的 node manager 中获取数据地址,以得到存储这个查询相关数据的所有数据节点。

  4. Coordinator 初始化相应 Impalad 上的任务执行,即把查询任务分配给所有存储这个查询相关数据的数据节点。

  5. Query Executor 通过流式交换中间输出,并由 Query Coordinator 汇聚来自各个 Impalad 的结果。

  6. Coordinator 把汇总后的结果返回给客户端。

三、安装 Impala

1. Impala 官网相关

  • 官网地址:http://impala.apache.org/

  • 官方文档:http://impala.apache.org/impala-docs.html

  • 下载地址:http://impala.apache.org/downloads.html

2. Impala 安装方式

Impala 安装方式主要有2种,一种是手动安装,一种是通过 CDH 安装,这里推荐 CDH 安装。
安装过程就不演示了,根据提示,鼠标点点点就装完了。

3. Impala 监控页面

  • 查看 StateStore:http://localhost:25020

  • 查看 Catalog:http://localhost:25010

四、Impala 优缺点

1. 优点

  • 基于内存运算,中间结果不需要落盘,节省了大量 I/O 开销

  • 无需转换为 MapReduce,直接访问存储在 HDFS,HBase 中的数据进行作业调度,查询速度快

  • 使用了数据本地化的 I/O 调度机制,尽可能将数据和计算分配在
    同一台机器上进行,减少了网络开销

  • 丰富的文件格式支持,如 TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet

  • 可以访问 hive 的 metastore,可以对 hive 数据直接做数据分析

2. 缺点

  • 对内存的依赖较大,且完全依赖于 hive

  • 只能读取文本文件,而不能直接读取自定义二进制文件

  • 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新

五、Impala 优化

  • 尽量将 StateStore 和 Catalog 单独部署到同一个节点,保证他们正常通行

  • 2、通过对 Impala Daemon 内存限制(默认256M)及 StateStore 工作线程数,来提高Impala的执行效率。

  • 选择合适的文件格式进行存储,提高查询效率。

  • 使用合适的分区技术。

  • 查询时,尽可能的做条件过滤。

  • 输出文件时,避免使用美化输出。

  • 尽量少用全量元数据的刷新

  • 根据 profile 输出的底层信息,做相应环境参数优化

六、Impala 简单使用

  1. 启动 Impala

impala-shell
  1. 查看数据库

show databases;
  1. 打开数据库

use default;
  1. 查看数据表

show tables;
  1. 建表

create table demo_tbl(id intname string)
row format delimited
fields terminated by '\t';
  1. 向表中导入数据

load data inpath 'demo.txt' into table demo_tbl;
  1. 查询表中数据

select * from demo_tbl;
  1. 退出

quit;


往期推荐

你们想知道的都在这里:lacus流程架构分享

常见的10种 CDC 组件和方案

零代码数据同步平台开源啦!!!

实时数仓架构选型及建议

请使用浏览器的分享功能分享到微信等