开发者学堂课程【大数据Impala教程:架构组件&查询处理流程--笔记总结】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/722/detail/12886
架构组件&查询处理流程--笔记总结
内容介绍:
一、Impala 可以集群部署
二、Impala 查询处理流程
一、Impala 可以集群部署
1.概况
为了更好的理解 Impala 工作执行流程。通过笔记的方式用通俗的话语去描述当 Impala 中各个模块的职责以及查询处理过程。
2.Impala
首先针对 Impala 可以分布式集群部署。意味着可以部署在多个机器上,分为以下几个模块,第一个叫做 Impalad,准确来说 Impalad 就是 Impala 的服务。这个服务可以部署在多个不同的机器上。通常与 datenode 部署在同一个节点。这个目的主要是方便数据的本地化计算,效率较高,除了知道 Impala 之外,还要知道负责具体执行本次查询 SQL 的 Impalad 称之为 Coordinator。比如发射请求,每个负责查询的连接到一个机器上,把它称之为协调者。协调者单词叫做 Coordinator,说到这里可以感受一下 Impala 服务可以连接到任何一台机器上。叫做每个 Impala server 都可以对外提供服务,都可以接受用户的请求,这是第一个模块。
3.Impala State Store
第二个模块叫做 Impala State Store 状态存储,主要保存 Impalad 的状态信息。监视其健康状态,维护集群中哪些服务可用,哪些服务不可用。
4.Impala Catalogd
第三个很重要叫做 Impala Catalogd 这个进程在老版本的 Impala 中是没有的。主要 metastore 维护的网关负责跟 hive 的 metastore 进行交互,同步 hive 的数据到 Impala 自己的元数据中。启动的时候可以看到这些进程和服务的存在。
5.CLI
另外一个是用户操作 Impala 的方式,目前来说官方使用的 shell 通过命令行 Impala shell,另外一个可以使用 JDBC,写 Java 代码访问他,另外可以跟 hue 软件做集成,通过可视化页面区别。这样就可以满足 Impala 架构模块。要理解清楚他们分别的职责是什么。
二、Impala 查询处理流程
第二块叫做 Impala 查询处理流程。主要主要是简单梳理感受 Impala 是怎么工作的。根据讲义上的图感受大致 Impalad 执行过程。
1.两个部分
每个分为两个部分,一个叫做 Java 前端。一个叫做 C++ 后端。Java 前端负责接收解析 SQL,编译成执行计划树。C++ 后端负责具体的执行计划树操作,最终对数据进行操作。对于 C++ 代码怎么优化的开发代码比较陌生了。
2.Impala SQL
下面看一下用户编写的 Impala SQL。SQL 首先传递给一个 Impala 的服务器 Impalad ,负责接受的叫做 Coordinator,调用 Java 前端,编译 SQL 成计划树。把编译的计划树以 Thrift 的数据格式返回给 C++ 后端。后端根据执行计划树、数据位于路径。路径底层会通过 libhdfs 和文件系统 HDFS 交互。还有 Impalad 状态信息,分配执行计划,进行查询,再汇总查询结果,把结果返回给 Java 前端,传递给用户的 CLI 命令行的地方或是进行 hue 展示的地方,大致描绘出了编写的收获过程。
3.跟 hive 的不同
可以类比跟 hive 的执行流程总结优化,跟 hive 不同就在于整个执行中已经没有了 mapreduce 程序的存在,就可以使得它变成一种实时查询交互的 SQL 类的软件。