SparkSQL 之 Hive On Spark 原理分析

摘要:Hive on Spark 让传统 Hive 数仓跑在 Spark 引擎上。本文从 RSC 远程作业提交机制、HQL 编译 6 步、MR/Tez/Spark 三引擎对比、完整配置清单四个维度,配合 2 张架构图,彻底解析 Hive on Spark 原理。

关键词:Hive on Spark, RSC, Remote SparkContext, SparkClient, hive.execution.engine


一、开篇

传统 Hive 默认使用 MapReduce,每个 Stage 写 HDFS。Hive on Spark 将 Spark 作为执行引擎:RDD 内存迭代 + Catalyst 优化。

引擎演变: MR(1x) → Tez(10~100x) → Spark(100x+)
切换: set hive.execution.engine=spark;

二、架构全景 — RSC 核心机制

在这里插入图片描述

RSC (Remote Spark Context) = Hive 内嵌的轻量 Spark Driver
  ① HiveServer2 接收 HQL → ② SparkClient 创建
  ③ RemoteDriver 向 YARN 提交 → ④ 启动 RSC
  ⑤ YARN 分配 Executor → ⑥ JobMonitor 监控

三、HQL 编译 & 引擎对比

在这里插入图片描述

HQL 编译 6 步

① 解析(AST) → ② 语义分析(Metastore) → ③ 逻辑优化
④ SparkTask(Operator Tree→SparkWork) → ⑤ SparkCompiler(RDD Transform)
⑥ SparkClient.submit → Executor 执行

引擎对比

MRTezSpark
速度1x10~100x100x+
中间结果HDFS磁盘内存PipelineRDD内存
适用已淘汰纯SQL迭代/ML

四、配置清单

<!-- hive-site.xml -->
hive.execution.engine=spark
spark.master=yarn
spark.yarn.jars=hdfs://namenode/spark-jars/*  <!-- 必配! -->
# spark-defaults.conf
spark.executor.memory=4g
spark.dynamicAllocation.enabled=true
spark.shuffle.service.enabled=true

五、总结

  1. RSC:Hive 内嵌 Driver,通过 SparkClient 向 YARN 提交作业。
  2. 引擎选择:Tez 纯 SQL 更快,Spark 迭代/ML 更优。
  3. 配置关键:spark.yarn.jars 必配 + Dynamic Allocation。

作者:starzy
博客blog.starzy.cn
GitHubstarzy1990.github.io
专注 AI Agent · LangGraph · RAG · 大数据架构 · 数据工程实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据技术实践者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值