bigdata-29-Impala初步了解

简介: bigdata-29-Impala初步了解

MapReduce、Hive和Impala之间的发展历程是这样的:MapReduce->Hive->Impala。

官方一点的解释:

Impala是一个开源的基于内存的快速查询分析引擎。

他可以直接使用Hive的Metastore,也就是说Hive中创建的表,Impala可以直接使用;并且兼容HiveSQL,但是不是100%兼容,大部分的SQL语法都是兼容的。

Impala的优点

  1. 1:基于内存运算,中间结果不落盘,节省大量的I/O开销;因为在MapReduce任务中,Map阶段产生的中间结果需要先写磁盘,再通过Shuffle拷贝到Reduce阶段,所以会产生大量的I/O,因此计算效率不如Impala。
  2. 2:底层计算引擎由C++编写,通过LLVM统一编译运行,效率更高。LLVM是一个编译器。注意了,Impala底层的计算引擎没有使用大数据生态圈中的计算框架,它是自己单独实现的。
  3. 3:兼容HiveSQL语法,学习成本低,容易上手。ImpalaSQL支持SQL92标准,并具有自己的解析器和优化器。SQL92是数据库的一个ANSI标准,HiveSQL也支持SQL92标准。
  4. 4:兼容Hive的Metastore,可以直接使用Hive中的表。
  5. 5:支持数据本地化(Data Locality)特性,提高计算效率。其实就是说Impala支持数据本地计算,前提是impala的服务需要和HDFS的datanode节点部署在一起。
  6. 6:支持列式存储数据格式,可以和HBase整合。也就是说Impala可以通过SQL计算HBase中的数据。
  7. 7:支持多种文件格式,例如:TextFile、SequenceFile、RCFile、ORC和Parquet。其实只要是Hive支持的数据格式,目前Impala都是支持的。
  8. 8:支持ODBC/JDBC远程访问,这样就可以无缝对接到Web项目,在页面操作起来更方便。

Impala的缺点

  1. 1:基于内存进行计算,对内存依赖性较大。基于内存计算,既是优点,也是缺点。
  2. 2:使用C++编写,意味着维护难度增加,相对而言,Java程序维护起来比较简单。
  3. 3:分区数量超过一万,性能严重下降,容易出现问题。主要还是因为它是基于内存计算,单个SQL任务计算的数据量过大,对内存依赖就很大了,所以容易出现问题。
  4. 4:基于Hive,与Hive共存亡。因为Impala需要使用Hive的Metastore来存储元数据信息。
  5. 5:稳定性不如Hive。主要也是因为Impala是基于内存的,所以稳定性相对来说一般。

Impala + Hive

Impala和Hive之间的关系从这个图里面可以比较清晰的进行了解

最底层是HDFS,接着是MapReduce、Hive对MapReduce做了封装,提供了SQL支持。

Hive的元数据信息存储在Metastore中,Metastore我们一般是使用MySQL。

Impala自己使用C++实现了一套分布式计算引擎,也可以直接操作HDFS中的数据,并且和Hive共享一个Metastore。

Impala三大核心组件

Impala架构中主要包含三大核心组件:

  1. Impala daemon:简称为impalad,它是Impala集群中的核心守护进程,需要在多个节点启动,一般会和DataNode节点部署在一起;他主要负责向Statestore保持通信,汇报工作。同时负责接收客户端的请求,执行查询,并把结果返回给客户端。
  2. Statestore daemon:简称为statestored,他主要负责收集集群中各个Impalad进程的资源信息、各节点健康状况、同步节点信息,以及负责Query的协调调度。
  3. Catalog daemon:简称为catalogd,他主要负责分发表的元数据信息到各个Impalad中,以及接收来自Statestore的所有请求。

这个图里面包含了客户端、Hive Metastore、HDFS NameNode、HDFS DataNode、HBase以及Impala中的Statestore、Catalog、Impalad这三个核心组件。

其中Hive Metastore是负责维护Impala元数据信息的,HDFS和HBase都是可以作为Impala底层数据存储的组件。

客户端向Impala发送请求时的整个执行流程是这样的:

(1)客户端向某一个Impalad发送一个Query(SQL)。

(2)Impalad将Query解析为具体的Planner(执行计划), 然后交给当前机器的Coordinator(中心协调节点)。

(3)Coordinator根据Planner,通过本机的Executor执行,并转发给其他有数据的Impalad。

(4)多个Impalad的Executor之间会进行通信,可能需要一些数据的处理。

(5)各个Impalad的Executor执行完成后,会将结果返回给Coordinator。

(6)由Coordinator将汇聚的查询结果返回给客户端。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
分布式计算 资源调度 Java
Hadoop学习笔记(HDP)-Part.17 安装Spark2
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
95 0
Hadoop学习笔记(HDP)-Part.17 安装Spark2
|
7月前
|
SQL 分布式计算 Hadoop
Apache Impala 的安装部署
Apache Impala 的安装部署
225 0
|
7月前
|
SQL 存储 分布式计算
Apache Impala(demo)
Apache Impala(demo)
96 0
|
SQL 缓存 HIVE
Impala MetaData问题
Impala MetaData问题
258 0
|
SQL 存储 分布式计算
Impala 架构了解
Impala 架构了解
Impala 架构了解
|
SQL XML 分布式计算
CDH 搭 建_Impala|学习笔记
快速学习 CDH 搭 建_Impala
492 0
CDH 搭 建_Impala|学习笔记
|
SQL 分布式计算 Java
KuduSpark_Impala 访问 Kudu | 学习笔记
快速学习 KuduSpark_Impala 访问 Kudu
318 0
KuduSpark_Impala 访问 Kudu | 学习笔记
Impala——2.架构
标签(空格分隔): Impala Impala Server的组件 Impala服务器是分布式,大规模并行处理(MPP)数据库引擎。它由不同的在群集中的特定主机上运行的守护程序进程组成。 Impala守护进程 核心Impala组件是一个守护进程,它通过impalad进程在集群的每个DataNode上运行。
1741 0
Impala——1.概述
标签(空格分隔): Impala Impala是什么 官方论文 Impala对存储在HDFS,HBase的Apache Hadoop数据和存储在Amazon S3上的数据提供快速,交互式的SQL查询。
1710 0