大数据学习(61)-Impala与Hive计算引擎

&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门

💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、impala与yarn资源管理

YARN 是 Apache Hadoop 生态系统中的一个资源管理器,它采用了 master/slave 的架构,使得多个处理框架能够在同一集群上共享资源。Impala 作为 Hadoop 生态系统中的一个组件,可以与 YARN 集成,以便更好地管理和调度集群资源。

当 Impala 与 YARN 集成时,YARN 负责管理集群中的计算资源,如 CPU 和内存,并根据 Impala 的需求进行资源分配。这有助于提高 Impala 的查询性能和资源利用率。此外,YARN 还提供了容错机制,可以在节点故障时自动重新分配任务,从而确保 Impala 作业的可靠性。

不过,Impala 并不依赖于 YARN 来执行查询。即使没有 YARN,Impala 仍然可以在 Hadoop 集群上运行,只是资源管理和调度方面可能不如与 YARN 集成时高效。

二、Impala 与 Hive

  • 数据仓库工具:两者都是构建在 Hadoop 之上的数据仓库工具,用于查询和分析存储在 HDFS(Hadoop Distributed File System)中的大规模数据集。
  • SQL 支持:都提供了 SQL 查询语言支持,允许用户通过 SQL 语句来查询和分析数据。
  • 元数据管理都使用了 Hive Metastore 来管理数据库和表的元数据,使得数据定义和访问更加一致和方便。
  • 数据格式支持:都支持多种数据格式,如 Parquet、Avro、ORC 等,这些格式有助于优化查询性能和数据压缩。
  • 查询性能Impala 采用了内存并行处理架构,查询性能远高于 Hive(尤其是基于 MapReduce 的 Hive)。Impala 能够提供实时或接近实时的查询响应,而 Hive 则更适合于批处理查询。
  • 执行引擎 :Hive 的执行引擎是 MapReduce 或 Tez/Spark,而 Impala 有自己的查询执行引擎,能够直接在 HDFS 或 HBase 上执行 SQL 查询,无需转换为 MapReduce 任务。
  • 使用场景:Hive 更适合用于大规模数据仓库的建设和复杂的数据分析任务,而 Impala 则更适合用于交互式查询、实时报表生成和快速数据分析等场景。

三、Impala 与 Spark on Hive

  • 数据处理能力:Spark 是一个通用的大数据处理引擎,支持批处理、流处理、机器学习等多种数据处理模式,而 Impala 主要专注于交互式 SQL 查询。
  • 内存计算:虽然两者都支持内存计算以加速查询性能,但 Spark 的内存计算模型更加通用和灵活,可以应用于更多种类的数据处理任务。
  • 生态系统集成:Spark 生态系统丰富,包括 Spark SQL、Spark Streaming、MLlib 等多个组件,可以与 Hadoop、Kafka、Cassandra 等多种系统进行集成。而 Impala 则更专注于与 Hadoop 生态系统的集成。

四、impala架构组成

Impala 的架构主要由以下三个核心组件构成:

  1. Impalad

    • 作用 :Impalad 是 Impala 的守护进程,它运行在 Hadoop 集群的每个节点上,与 DataNode 运行在同一节点上。
    • 功能:接收客户端的查询请求,读写数据,并行执行查询,并将结果返回给客户端。
    • 模式:Impalad 可以作为 Coordinator(协调器)来解析 SQL 查询语句、生成执行计划,并调度查询执行计划;也可以作为 Executor(执行器)来具体执行数据查询操作,如数据扫描、聚合、排序等。
  2. State Store

    • 作用跟踪集群中所有 Impalad 的健康状态及位置信息。
    • 功能:通过创建多个线程来处理 Impalad 的注册订阅,并与各 Impalad 保持心跳连接,以确保集群中的 Impalad 正常运行。
  3. CLI(Command Line Interface)

    • 作用:提供给用户查询使用的命令行工具。
    • 功能 :用户可以通过 CLI 提交 SQL 查询请求,并查看查询结果。此外,Impala 还提供了Hue、JDBC、ODBC 等使用接口,方便用户以不同的方式访问 Impala。

五、Impala查询处理流程

当用户通过 CLI 或其他接口提交 SQL 查询请求时,Impala 的查询处理流程大致如下:

  1. 接收查询请求

    • 任意一个 Impalad 实例接收到客户端的查询请求后,如果它作为 Coordinator,则会负责解析该查询请求。
  2. 解析 SQL 查询语句

    • Coordinator 通过 JNI(Java Native Interface)调用 Java 前端对 SQL 查询语句进行解析,生成抽象语法树(AST)。
    • 然后,对 AST 进行语义分析,包括检查语法正确性、验证权限等。
  3. 生成执行计划

语义分析通过后,Coordinator 会根据查询语句和元数据信息生成执行计划树。执行计划树由多个 PlanFragment(计划片段)组成,每个 PlanFragment 表示执行计划树中的一个原子操作。

  1. 调度执行计划

    • Coordinator 会根据执行计划、数据存储信息(如 HDFS 中数据块的位置)以及集群的资源状况,通过调度器(如 simple-scheduler,使用 round-robin 算法)将执行计划分配给相应的后端执行器 Impalad 执行。
  2. 并行执行查询

    • 被分配了执行任务的 Impalad 实例会并行地执行查询操作,如数据扫描、聚合、排序等。这些操作会在内存中完成,以提高查询性能。
  3. 返回查询结果

    • 执行完成后,各 Impalad 实例会将查询结果通过网络流式地传送回给 Coordinator
    • Coordinator 会将汇总后的查询结果返回给客户端。

三、Impala核心特性

  1. 内存并行处理

    Impala 采用了内存并行处理架构,能够在多个节点上并行执行查询操作,从而显著提高查询性能。

  2. 与 Hadoop 生态系统的无缝集成

    Impala 可以直接与 HDFS 和 HBase 进行交互,无需将数据导出到其他系统中。 同时,Impala 还支持 Hive Metastore,使得用户能够重用 Hive 中的元数据。

  3. 低延迟的 SQL 查询

    Impala 提供了低延迟的 SQL 查询能力,使得用户能够更快速地进行大数据查询和分析。低延迟指的是查询从提交到返回结果的时间非常短,通常在秒级甚至毫秒级范围内。这对于需要实时或接近实时数据访问和分析的应用场景至关重要。

  4. 动态代码生成

    Impala 使用 LLVM(Low Level Virtual Machine)编译器框架来动态生成针对特定查询的优化代码,以进一步提高查询性能。(在Impala中,LLVM编译器框架被用于优化查询的执行过程。具体来说,Impala使用LLVM来动态生成针对特定查询的优化代码。这种动态代码生成技术能够显著提高查询的执行效率,因为生成的代码是专门为该查询定制的,能够充分利用底层硬件的特性。)

相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
B站计算机毕业设计超人6 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
B站计算机毕业设计超人6 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城6 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
王九思6 天前
Hive Thrift Server 介绍
数据仓库·hive·hadoop
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms6 天前
ROS2知识大白话
笔记·学习·ros2