HIVE SQL 底层执行逻辑

56 篇文章 11 订阅
55 篇文章 1 订阅

HIVE SQL 底层执行逻辑

hive可以通过访问HDFS等,通过MR引擎(或者更换的Spark、Tez等)执行查询逻辑,一个hive sql会被解译为若干个mr流程,那么是怎么执行的?

一、HIVE五大组件

在hive中,有很重要的五个组件

  1. UI

    用户界面,也就是hive提供给用户的可视化工具

  2. DRIVER

    驱动程序,十分关键的一部分

  3. COMPLIER

    编译器。负责将HIVE SQL翻译成可执行的执行计划

  4. METASTORE

    元数据库。存储各种表和分区所有的结构信息

  5. EXECUTION ENGIGN

    执行引擎。将解译好的执行计划提交到不同的引擎上。MR、Spark、Tez

二、执行过程

执行过程可以简单的理解为

  1. 通过UI提交代码
  2. 编译器编译,生成执行计划
  3. 获取执行计划中需要的元数据
  4. 为执行计划划分阶段
  5. 执行任务
  6. 任务结束,返回到UI

步骤1:UI调用DRIVER的接口

步骤2:DRIVER为查询创建会话句柄,并将查询发送到编译器生成执行计划

步骤3:编译器从元数据存储中获取输入输出元数据

步骤4:编译器生成的计划是分阶段的DAG,每个阶段要么是map任务,要么是reduce任务,从而将生成的计划发给DRIVER

步骤5:执行引擎将任务提交到对应的引擎。在每个 task(mapper/reducer) 中,从HDFS文件中读取与表或中间输出相关联的数据,并通过相关算子树传递这些数据。最终这些数据通过序列化器写入到一个临时HDFS文件中(如果不需要 reduce 阶段,则在 map 中操作)。临时文件用于向计划中后面的 map/reduce 阶段提供数据。

步骤6:最终的临时文件移动到表的位置
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值