架构组件&查询处理流程 | 学习笔记

简介: 快速学习 架构组件&查询处理流程

开发者学堂课程【大数据Impala教程架构组件&查询处理流程学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/722/detail/12885


架构组件&查询处理流程


内容介绍:

一、Impala 架构

二、CLI

三、Impalad

四、Impala State Store

五、Catalogd

六、总体结构

七、Impala 查询处理过程

 

一、Impalad 架构

Impala 的架构以及查询处理的过程。从架构层面分析 Impala,非常的清晰,大致可以分为四个模块。

 

二、CLI

首先看一下最后一个模块叫做 CLI ,这是一个命令行的方式。

既然是一款提供用户写 SQL 查询数据的软件,必须给出一种方式去写 SQL,当下 Impala 有这几种方式,最传统的是 Shell 命令行,在这个方面可以执行相关的售后语句,传递给 Impala 服务器进行咨询,此外提供了跟整 Hue 合,在 Hue 上进行查询的能力,包括 JAVA API 方式进行访问,属于外围操作的客户端。

 

三、Impalad

重点看一下自身所携带的三个架构服务模块。第一个叫做 Impalad,通俗理解,可以把它叫做 Impala Server 服务器,它是一个集群的概念,可以部署在任何集群上,也可以部署在多个。

image.png

1.Impalad 来源

通常会把 Impala 服务器部署在跟 Datenode 在同一个节点上,在它的底层上,Impala 追求计算的高效率,尽量要求满足能够在本地计算。把 Datenode 放在 A 机器上,把Impala 安装在 B 机器上,这两台机器之间需要跨网络去读数据,通常把 Impala 服务与 Datenode 部署在同一个节点上,这台机器上的服务的进程叫做 Impalad

2.指责明细

Impalad 的职责明细,主要用于第一点接收用户的 SQL 请求。要去操作 Impala 服务到底连接到哪台机器上,比如说现有 abc 三台机器都部署在 Impala,这时候指定连接到哪台机器,那台机器的 Impalad 负责查询需求,返回结果。当我们没有用户去连接的时候,它就是一个普通的Impala 服务叫做 Impalad

3.Coordinator

一旦接受到请求负责后续的查询,这时候把这台接收为查询请求的称作为 Coordinator 协调者。例如,我们三个本来都是普通的 Impala 服务,当中如果必接受请求,就针对这次的请求,它负责给出后续的协调处理。接收请求,编译成为查询计划树,调用其他 Impala 进行数据的咨询,返回结果。负责本次具体查询的 Impalad 叫做 CoordinatorImpalad 通过我们的本地调用,把身后语句转换为计划树传给后端,后端读数据,进行并行的咨询查询,把结果返回给前端。这是 Impalad 的职责。

 

四、Impala State Store

1.概念

Impala 的第二个架构叫状态存储。状态概念是由于当在多个机器上都去部署 Impala 服务 Impalad 后,就产生一个问题,哪个是存活的,哪个是死亡的,Impala 服务健康状态如何,这时候如何知道,因此需要一个进程去管理他,这个进程叫做 Impala State Store 状态存储服务。

2.内容

主要去保存整个 Impala 集群中,每个 Impalad 的健康状况以及它位于的机器的位置信息。比如,整个机器有100台。在奇数台当中不属于 Impalad ,这些 Impalad 都要跟 State Store 进行新教,包括注册,汇报信息,是成功还是失败。在 State Store 当中,会有一个表对数据进行记录。每个 Impalad 服务的健康状况,与此同时,每一个 Impalad 自己本地也会缓存一份 State Store 中的信息。缓存的原因是接收到用户请求之后,需要协调其他部分一起进行数据计算。正因为不知道有哪些部分,所以都会去缓存一份状态信息,通过信息可以知道当下整个渠道当中。除了自身之外还有其他的 Impalad。有一个数据在那里,需要计算一下,再将结果返回,因此就会缓存一份状态信息。

3.恢复模式

这时候有一个现象需要注意一下,一旦 State Store 进程属于离线,这时候会有一个 recovery 恢复的模式,在恢复模式下已经缓存的可以继续的工作,但缓存之后进程已经结束了,数据不会接着更新。因此如果这时候突然某个部分结束了进程,拿到的是缓存之前的数据,数据就不会更新。所以导致一些执行机而分配的时候会出错,分配给 A 其实 A 已经结束了进程。所以进入恢复模式下,会不断进行尝试,等待 State Store 的启动。这是第二个模块,用来追踪整个集群当中,Impalad 的健康状况以及它的位置信息。


五、Catalogd

第三个模块叫做 Catalogd ,这个模块是 Impala 后续内容新加的,它相当于一个媒介用来维护 Impala 元数据与 Hive 的元数据。虽然 Impala 最终使用的是跟 Hive 的同一个元数据,但这时候需要做一个中间的协调者。就是这个一个进程叫做Catalogd,会把 Hive 当中的元数据拉取过来,放到 Impala 自己的元数据中。如果 Impala 中的元数据涉及到更新,也会把它同步到 Hive 当中。这样相当于做了一个网关,维护着 Impala 本身的元数据与 Hive 的元数据。但是反过来,比如在 Hive 中做了一个修改,它不能自己主动地拉取过来,需要进行强制的刷新或是按照命令指定的刷新,这是一个架构。

 

六、总体结构

1.交互

如果画一个图,数据架构大概可以理解为部署三台服务器。分别是 node-1node-2node-3。每个机器上首先都有一个存储数据的节点 dn。接下来部署 Impalad 服务,首先第一个 Impalad,通常与 DateNode 在同一个节点上而可以部署多个。在每个 DateNode 位置上可以部署一个叫 Impalad 的服务,可以部署多个。部署完之后,node-1上有一个,同样剩下的机器上都要部署同样的,它可以在本地进行数据处理交互。

2.进程

第二点,部署一个状态存储的进程,这个进程主要是维护进程中哪个死亡,哪个健康,比如,这里找一台 node-3机器,再增加一个进程,叫做 State Store,其他的 Impalad 服务启动之后,就要向它进行注册,叫做注册 Impalad 的状态信息并且维持心跳保持联系。这一个维持心跳的目的是知道是活还是死亡,比如心跳超时,说明这个节点有问题,而且反过来每一个 Impalad 当中,还会维护的一个状态信息的缓存。

3.网关

第三个模块叫做 Catalogd ,主要是一个元数据访问的网关。在画布上增加一台机器,这台机器叫做 node-4,这上面主要是有 Hive metastor,那么这时候作为 Impalad 服务,它需要一个进程,维护着跟 Hive 之间的关系。例如,简单画一个 Catalogd,它会通过自身跟 Hive 元数据进行交互,维护的网关。比如,有数据需要更新,把它拉过来做一个维护,最终来说使用的是同一个 Hive metastor 元数据。

4.客户端

需要新增一个 Impala client (shell hue jdbc)客户端。当下用的最多的客户端是 shell 命令行,但不只有 shell 客户端,通过 hue 整合和 jdbc 都可以。作为客户端,不管在哪个机器上,当连接到任何一个 Impala 机器上都可以进行访问。比如将其连接到 node-2 Impalad 之后,就可以写 Impala SQL。把 SQL 发送出去,这时候接收到的 Impalad 就是上文提到的谁接收 Impalad 请求,谁就称之为 Coordinator, 在这种情况下,第二台机器的 Impalad,它就有一个别名是负责本次查询的 Impalad ,称之为 Coordinator,它就会针对 Impalad SQL 做一个解析,编译成执行计划树。在执行计划树中让其他部分进行处理,比如,发送了 SQL 需要计算一个数据,数据在另外的机器上,就会需要帮助计算再返回结果。这样就完成了一个配合。这就是整个 Impalad 的架构,看起来非常简单,也是一个集群的状态。

 

七、Impala 查询处理过程

接下来有了这个架构之后,处理其它的查询流程就非常的简单,非常清晰。准确来说,每个 Impalad 服务分为两个部分,叫做 Java 前端与 c++ 处理的后端。对于 Java 这一端比较熟悉,对于 c++ 不用担心,也不用管理。怎样进行查询处理。

image.png

1.三种方式

首先进行 Impalad CLI ClientODBC/JDBC DriverHue Beeswax 这三种交互的方式,当写下 SQL 回车,SQL 语句就会提交给 Impalad 服务。

2.协调者

每个 Impalad 服务都与 DateNode 位于同一个节点上,但是连接的时候必须要指定一个 Impalad,不管指定谁。比如说指向第三个,负责接受 SQL 提交的 Impalad,称之为 Coordinator 协调者,协调帮助执行的 SQL

3.计划树

接收到 SQL 后,协调者调用 JNI 方法去处理 SQL,把它解析成一个执行计划树,编译好之后会把这个树,以 Thrift 格式返回给 C++后端,每个 Impalad 服务分为 Java 前端和 C++后端。真正进行数据处理的是 C++后端。这个执行计划树中,类似于树结构当中有不同的阶段,每个阶段可以并行执行,有的必须按照顺序执行。整个执行计划树,根据编译分配规则,有的数据在这里,有的数据在那里,把具体的执行逻辑交给不同的 Impalad 进行执行。

4.数据存储

根据执行计划,数据位于的路径。要提交一个 SQL 查询表,表的数据位于另一台机器的 DateNode 上,它知道数据在这里的原因是,数据存储信息 Impala 底层通过 libhdfs HDFS 进行交互。交互的时候就知道,要查询一个数据文件,会了解到这个文件被切成了几块,分别在第一台机器上还是第二台机器。Impalad 服务通过查询发现在机器上有一个数据块是需要计算的。这样叫做协调者,协调由哪个 Impalad 来具体的进行查询,查询之后把结果进行返回。

5.insert 语句

如果不是查询语句而是一个插入语句,这个数据最终要写到 HDFS 上。在底层还会调用 libhdfs ,把数据写到 HDFS 上。就完成了整个的查询,把最终汇总的结果返回给客户端,就得到了结果。当中每个 Impalad 必须要跟状态服务器 State Store 做一个注册和心跳的保持联系。因为不保持联系的话,就不知道哪个已经发生了故障,哪个已经死去。这就是整个查询处理过程,结合架构以及图示做了解即可。

相关文章
|
1月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
157 8
|
11月前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
5月前
|
存储 人工智能 自然语言处理
Cursor这类编程Agent软件的模型架构与工作流程
编程Agent的核心是一个强大的大语言模型,负责理解用户意图并生成相应的代码和解决方案。这些模型通过海量文本和代码数据的训练,掌握了广泛的编程知识和语言理解能力。
486 1
|
9月前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
681 81
|
5月前
|
人工智能 自然语言处理 算法
文生图架构设计原来如此简单之交互流程优化
文生图创作很少是一次完成的过程,通常需要多轮迭代才能达到理想效果。多轮交互架构设计的目标是使这一迭代过程尽可能流畅和高效。
158 6
|
6月前
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
10月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
571 10
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
10月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
890 3
【赵渝强老师】基于大数据组件的平台架构
|
9月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
10月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
253 3

热门文章

最新文章