Impala总结

在拉勾教育大数据训练营的学习中,关于impala的学习总结

Impala

概述

开源的针对HDFS和HBASE中的PB级别数据进行交互式实时查询

优点

  • 使用MPP没有使用MR,提升速度

  • 使⽤用LLVM(C++编写的编译器器)产生运行代码

  • 优秀的IO调度

  • 选择适合的数据存储格式可以得到最好的性能

  • 尽可能使用内存,中间结果不写磁盘,及时通过网络以stream的⽅式传递

缺点

  • Impala属于MPP架构,只能做到百节点级,一般并发查询个数达到20左右时

  • 资源不不能通过YARN统⼀一资源管理理调度,所以Hadoop集群⽆无法实现Impala、Spark、Hive等组件 的动态资源共享。

与hive对比

  • 查询过程:在Hive中,每个查询都有⼀一个“冷启动”的常⻅见问题。(map,reduce每次都要启动关闭,申 请资源,释放资源。。。)

  • 中间结果:Hive通过MR引擎实现所有中间结果,中间结果需要落盘,impala是流的方式传递

  • 交互查询:Hive不是理想的选择。

  • 计算引擎:hive是MR,impala类似于MPP

  • 容错:Hive是容错的,impala没有

  • 查询速度:Impala⽐比Hive快3-90倍。

  • Hive: 复杂的批处理理查询任务,数据转换任务,对实时性要求不不⾼高同时数据量又很大的场景。

    • Impala:实时数据分析,与Hive配合使⽤用,对Hive的结果数据集进⾏行行实时分析。impala不不能完全取代 hive,impala可以直接处理理hive表中的数据。

架构原理

组件

  • impalad

    • 负责读写数据文件,接收来自Impala-shell,JDBC,ODBC等的查询请求,与集群其它 Impalad分布式并行完成查询任务,并将查询结果返回给中⼼协调者。

    • 为了了保证Impalad进程了解其它Impalad的健康状况,Impalad进程会⼀直与statestore保持通信。

    • Impalad服务由三个模块组成:Query Planner、Query Coordinator和Query Executor,前两个 模块组成前端,负责接收SQL查询请求,解析SQL并转换成执⾏计划,交由后端执行,

  • statestored

    • statestore监控集群中Impalad的健康状况,并将集群健康信息同步给Impalad,

  • catalogd

    • Impala执行的SQL语句引发元数据发生变化时,catalog服务负责把这些元数据的变化同步给其它 Impalad进程(日志验证,监控statestore进程日志)

    • catalogd进程所有请求都是经过 statestored进程发送,所以官⽅方建议让statestored进程与catalogd进程安排同个节点。

查询

  • Client提交任务

  • 生成单机和分布式执⾏计划

    • 单机执⾏计划: 根据上一步对SQL语句句的分析,由Planner先生成单机的执行计划,该执行计划是有PlanNode组成的⼀棵树,这个过程中也会执行一些SQL优化,例如Join顺序改变、谓词下推等。

    • 分布式并行物理计划:将单机执⾏计划转换成分布式并行物理执⾏计划,物理执⾏计划由⼀个的Fragment组成,Fragment之间有数据依赖关系,处理过程中需要在原有的执⾏计划 之上加⼊一些ExchangeNode和DataStreamSink信息等。

  • 任务调度和分发

  • Fragment之间的数据依赖

  • 结果汇总

  • 获取结果

使用

Impala-shell

  • 外部命令

    • impala-shell –h

    • impala-shell –r

    • impala-shell –f

    • impala-shell –i

    • impala-shell –o

  • 内部命令

    • connect hostname

    • refresh dbname.tablename 增量刷新

    • invalidate metadata全量刷新

    • explain可以不真正执⾏任务,只是展示任务的执行计划;

    • profile:需要任务执行完成后调⽤,可以从更底层以及更更详细的层面来观察我们运⾏impala的任务,进行调优。

Impala sql

  • 创建数据库:CREATE DATABASE IF NOT EXISTS database_name;

  • 删除数据库:drop database sample cascade;

  • create table语句

  • insert 语句

  • select语句

  • describe语句

  • alter table

  • delete、truncate table

  • view视图

  • order by⼦句

  • group by⼦句

  • limit、offset

Impala 导入数据

  • insert into values

  • insert into select

  • create table as select

  • load data⽅式,这种⽅式不建议在Impala中使⽤用,先使⽤用load data⽅式把数据加载到Hive表中,然后使用以上方式插⼊Impala表中。

负载均衡

HAProxy(官方推荐)

DNS做负载均衡

优化

避免⼩文件:insert ... values 会产⽣⼤量小⽂件,避免使⽤,文件格式:对于大数据量来说,Parquet⽂件格式是最佳的

合理理分区粒度:通常建议分区数量在3万以下 (太多的分区也会造成元数据管理的性能下降)

获取表的统计指标:减少传输客户端数据量:聚合(如 count、sum、max 等);过滤(如 WHERE );limit限制返回条数;返回结果不要使⽤用美化格式进⾏展示

在执⾏之前使⽤用EXPLAIN来查看逻辑规划,分析执⾏逻辑

Impala join⾃动的优化⼿段就是通过使⽤COMPUTE STATS来收集参与Join的每张表的统计信 息,然后由Impala根据表的⼤小、列的唯⼀值数目等来⾃动优化查询

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值