Impala概述,特点,缺点,架构说明

news/2025/6/1 13:02:06

1、概述
Impala是Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能
基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点
impala使用hive的元数据, 完全在内存中计算
是CDH平台首选的PB级大数据实时查询分析引擎


2、Impala的特点
impalak快的原因:1、2、3、6
1、基于内存进行计算,能够对PB级数据进行交互式实时查询、分析

2、无需转换为MR,直接读取HDFS及Hbase数据 ,从而大大降低了延迟。
mpala没有MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成

3、C++编写,LLVM统一编译运行
在底层对硬件进行优化, LLVM:编译器,比较稳定,效率高

4、兼容HiveSQL
支持hive基本的一些查询等,hive中的一些复杂结构是不支持的

5、具有数据仓库的特性,可对hive数据直接做数据分析

6、支持Data Local
数据本地化:无需数据移动,减少数据的传输,就是说将数据和计算分配到同一个计算机上运行,减少网络开销

7、支持列式存储
可以和Hbase整合:因为Hive可以和Hbasez整合

8、支持JDBC/ODBC远程访问


3、Impala劣势
1、对内存依赖大
只在内存中计算,官方建议128G(一般64G基本满足),可优化: 各个节点汇总的节点(服务器)内存选用大的,不汇总节点可小点

2、C++编写 开源 ?
对于java, C++可能不是很了解

3、完全依赖hive

4、实践过程中分区超过1w 性能严重下下降
定期删除没有必要的分区,保证分区的个数不要太大

5、稳定性不如hive
因完全在内存中计算,内存不够,会出现问题, hive内存不够,可使用外存

6、Impala不提供任何对序列化和反序列化的支持。
Impala只能读取文本文件,而不能读取自定义二进制文件。

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


4、整体架构图 

Impala自身包含三个模块:Impalad,Statestore和Catalog,除此之外,它还依赖Hive Metastore和HDFS

Impalad:
接收client的请求、Query执行并返回给中心协调节点;
子节点上的守护进程,负责向state store保持通信,汇报工作

Catalog
分发表的元数据信息到各个impalad中;
接收来自statestore的所有请求。

Statestore
负责收集分布在集群中各个impalad进程的资源信息;
各节点健康状况,同步节点信息
负责query的协调调度。


Impala daemon(Impalad)

Impala daemon(也称为impalad)在安装Impala的每个节点上运行。 它接受来自各种接口的查询,如impala shell,hue browser等...并处理它们。

每当将查询提交到特定节点上的impalad时,该节点充当该查询的“协调器节点”。 Impalad还在其他节点上运行多个查询。 接受查询后,Impalad读取和写入数据文件,并通过将工作分发到Impala集群中的其他Impala节点来并行化查询。 当查询处理各种Impalad实例时,所有查询都将结果返回到中央协调节点。

根据需要,可以将查询提交到专用Impalad或以负载平衡方式提交到集群中的另一Impalad。

 

Impala 存储的状态

Impala有另一个称为Impala State存储的重要组件,它负责检查每个Impalad的运行状况,然后经常将每个Impala Daemon运行状况中继给其他守护程序。 这可以在运行Impala服务器或群集中的其他节点的同一节点上运行。
Impala State存储守护进程的名称为存储的状态。 Impalad将其运行状况报告给Impala State存储守护程序,即存储的状态。
在由于任何原因导致节点故障的情况下,Statestore将更新所有其他节点关于此故障,并且一旦此类通知可用于其他impalad,则其他Impala守护程序不会向受影响的节点分配任何进一步的查询。

 

Impala元数据和元存储

Impala元数据和元存储是另一个重要组件。 Impala使用传统的MySQL或PostgreSQL数据库来存储表定义。 诸如表和列信息和表定义的重要细节存储在称为元存储的集中式数据库中。
每个Impala节点在本地缓存所有元数据。 当处理极大量的数据和/或许多分区时,获得表特定的元数据可能需要大量的时间。 因此,本地存储的元数据缓存有助于立即提供这样的信息。
当表定义或表数据更新时,其他Impala后台进程必须通过检索最新元数据来更新其元数据缓存,然后对相关表发出新查询。

 

查询处理接口

要处理查询,Impala提供了三个接口,如下所示。

  • Impala-shell - 使用Cloudera VM设置Impala后,可以通过在编辑器中键入impala-shell命令来启动Impala shell。 我们将在后续章节中更多地讨论Impala shell。

  • Hue界面 - 您可以使用Hue浏览器处理Impala查询。 在Hue浏览器中,您有Impala查询编辑器,您可以在其中键入和执行impala查询。 要访问此编辑器,首先,您需要登录到Hue浏览器。

  • ODBC / JDBC驱动程序 - 与其他数据库一样,Impala提供ODBC / JDBC驱动程序。 使用这些驱动程序,您可以通过支持这些驱动程序的编程语言连接到impala,并构建使用这些编程语言在impala中处理查询的应用程序。

查询执行过程

每当用户使用提供的任何接口传递查询时,集群中的Impalads之一就会接受该查询。 此Impalad被视为该特定查询的协调程序。
在接收到查询后,查询协调器使用Hive元存储中的表模式验证查询是否合适。 稍后,它从HDFS名称节点收集关于执行查询所需的数据的位置的信息,并将该信息发送到其他impalad以便执行查询。
所有其他Impala守护程序读取指定的数据块并处理查询。 一旦所有守护程序完成其任务,查询协调器将收集结果并将其传递给用户。

 

文章来源:https://blog.csdn.net/qq_41712271/article/details/108337838
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18187.html

相关文章

如何在页面中(html 等)设置IE浏览器的文档模式

最近在使用一个开源框架,发现该框架能跨浏览器和版本,但唯独在IE下的Quirks Model下表现不太好。一开始想着如何自己去完善在该模式下的问题,后来一想为何不找到一种方法,在代码里面设置好让页面在IE浏览器下面不呈现Quirks Model…

《深入理解计算机网络》读后小记 5、数据链路层

一、数据链路层基础 1、定义:数据链路层是真正用于数据传输的逻辑通道。 2、划分数据链路层的必要性: (1)、由于物理层传输介质的多样性和通信规程的各不相同,所以需要从逻辑意义上构建一条性能稳定、不受传输介质类型…

整数的除法产生一个浮点数

整数的除法产生一个浮点数一、整数的除法产生一个浮点数1、代码2、结果3、解析二、其他一、整数的除法产生一个浮点数 1、代码 Testvoid contextLoad17() {int a 1;int b 2;float f1 a / b;float f2 (float) a / b;float f3 (float) (a / b * 1.0);float f4 (float) (1.…

Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别

转:http://www.crifan.com/linux_system_in__dev__mtd_and__dev__mtdblock_distinction_character_devices_and_block_devices_mtd_difference/ 1. /dev/mtdN 是Linux 中的MTD架构中,系统自己实现的mtd分区所对应的字符设备,其里面添加了一些…

Impala安装方式

Impala安装方式有两种 1 通过Cloudera Manager(CDH方式安装),推荐用这个,方便 2 手动安装,此方式级其复杂 下面通过Cloudera Manager的方式安装Impala 在主页中点击添加服务 选择Impala服务 进行角色分配 注意:最好将StateS…

车辆违章查询演示代码

车辆违章查询演示示例 using System; using System.Text; using System.Net; namespace weizhang { class Program { static void Main(string[] args) { string city "********";// 城市代码 * string hphm "********";// 号牌号码 完整7位 * strin…

Java8中的双冒号操作符

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、定义1、常用语法二、介绍1、静态方法语法2、类实例方法语法3、超类方法语法4、类构造器语法5、类实例方法语法三、案例一、定义 就是Java 8中的Lambda写法 双冒…

Impala的外部shell 操作命令

外部shell 命令:就是还没有进入Impala,运行 impala-shell,可添加的参数 选项描述-h, --help显示帮助信息-v or --version显示版本信息-i hostname, --impaladhostname指定连接运行 impalad 守护进程的主机。默认端口是 21000-q query, --que…

中值滤波和均值滤波C++代码

均值滤波和中值滤波代码 2008-11-24 16:07:36| 分类&#xff1a; 编程|举报|字号 订阅 //------------------均值滤波器 bool FilterAV(unsigned char *image,int height,int width) { int i,j; unsigned char *p(unsigned char*)malloc(height*width); for(i1;i<height-…

浅谈软件体系结构在项目中的作用

记得几年前在别人的微博上看到Mitchell Kapor的这么一句&#xff1a;软件缺乏可用性以及糟糕的程序设计是软件业不愿公开的羞耻。的确作为一个软件的设计者与开发者&#xff0c;做出来的程序不符合需求&#xff0c;那么这个软件就是失败的。在IT软件行业中&#xff0c;每个人都…