ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SparkSQL 之 Hive On Spark 原理分析

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.enginespark;二、架构全景 — 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.enginespark spark.masteryarn spark.yarn.jarshdfs://namenode/spark-jars/*!-- 必配 --# spark-defaults.conf spark.executor.memory4g spark.dynamicAllocation.enabledtrue spark.shuffle.service.enabledtrue五、总结RSCHive 内嵌 Driver通过 SparkClient 向 YARN 提交作业。引擎选择Tez 纯 SQL 更快Spark 迭代/ML 更优。配置关键spark.yarn.jars 必配 Dynamic Allocation。作者starzy博客blog.starzy.cnGitHubstarzy1990.github.io专注 AI Agent · LangGraph · RAG · 大数据架构 · 数据工程实践
返回列表