Impala概述
2020-07-24 本文已影响0人
一拳超疼
题记
本文内容资料来源于拉钩教育大数据高薪训练营
impala的概述
Impala是Cloudera提供的⼀款开源的针对HDFS和HBASE中的PB级别数据进⾏交互式实时查询(Impala速度快),Impala是参照⾕歌的新三篇论⽂当中的Dremel实现⽽来,其中旧三篇论⽂分别是
(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。
Impala最⼤卖点和最⼤特点就是快速,Impala中⽂翻译是⾼⻆羚⽺。
Impala的优缺点
-
优点
- Impala没有和hive一样采用mapReduce作为计算引擎,而是采用了MPP数据库技术(Massively Parallel Processing)即大规模并行处理,大大提高了查询速度。
- 使⽤LLVM(C++编写的编译器)产⽣运⾏代码,针对特定查询⽣成特定代码。
- 优秀的IO调度,Impala⽀持直接数据块读取和本地代码计算。
- 选择适合的数据存储格式可以得到最好的性能(Impala⽀持多种存储格式)。
- 尽可能使⽤内存,中间结果不写磁盘,及时通过⽹络以stream的⽅式传递。
-
缺点
- Impala属于MPP架构,只能做到百节点级,⼀般并发查询个数达到20左右时,整个系统的吞吐已经达到满负荷状态,在扩容节点也提升不了吞吐量,处理数据量在PB级别最佳。
- 资源不能通过YARN统⼀资源管理调度,所以Hadoop集群⽆法实现Impala、Spark、Hive等组件的动态资源共享
Impala与Hive对比分析
查询过程
- Hive:Hive存在冷启动的问题,即一个task会启动对应的MapReduce,会存在多个MapReduce的启动和关闭的过程。
- Impala:Impala运行后台守护线程,不存在冷启动的情况。
中间结果 - Hive:Hive通过MR计算引擎对数据进行分析,在其中存在缓冲区数据溢写到磁盘的过程,且MR在shuffle过程中默认存在Sort过程,因此会有较大的磁盘开销。
- Impala:在执行程序之间使用流的方式传输中间结果,避免了数据写磁盘的过程,尽可能使用内存。
交互查询 - Hive:适合批处理,不适合实时交互查询。
- Impala:非常适合交互式查询,当数据量限制在PB级
计算引擎 - Hive:是基于批处理的Hadoop MapReduce
- Impala:更像是MPP数据库
容错 - Hive:Hive是容错的(通过MR&Yarn实现)
- Impala:Impala没有容错,由于良好的查询性能,Impala遇到错误会重新执⾏⼀次查询
查询速度
Impala:Impala⽐Hive快3-90倍
适⽤场景
- Hive: 复杂的批处理查询任务,数据转换任务,对实时性要求不⾼同时数据量⼜很⼤的场景。
- Impala:实时数据分析,与Hive配合使⽤,对Hive的结果数据集进⾏实时分。impala不能完全取代hive,impala可以直接处理hive表中的数据。