✅ 前提条件
Hive 2.3.9 已正确安装并运行(确保
hive --service metastore在后台运行)Hadoop 2.10.2 集群已启动(
start-dfs.sh和start-yarn.sh已执行)Spark-3.3.2-bin-hadoop2
系统环境:ubuntu24
📌 步骤 1:下载并安装 spark-3.3.2-bin-hadoop2
Spark 3.3.2的 Hadoop 2兼容版本是 Hadoop 2.7.x(Hadoop 2.10.2 属于 Hadoop 2.x,API 与 2.7 兼容)。
从 Spark 官网 下载:
wget https://archive.apache.org/dist/spark/spark-3.3.2/spark-3.3.2-bin-hadoop2.tgz
# 国内镜像:https://mirrors.huaweicloud.com/apache/spark/spark-3.3.2/spark-3.3.2-bin-hadoop2.tgz
tar -xzvf spark-3.3.2-bin-hadoop2.tgz
解压后配置spark环境变量💡 关键点:不要下载
hadoop3.x版本,否则会因 Hadoop 版本不匹配导致错误。
📌 步骤 2:配置 Spark 以集成 Hive
(1) 复制 Hive 配置文件到 Spark
将 Hive核心配置文件复制到 Spark 的 conf 目录:
cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/(2) 复制 mysql connector JAR 到 Spark 的 jars 目录
下载mysql connector
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.32/mysql-connector-j-8.0.32.jar
其他jar:
如果使用了paimon表需要将paimon-hive-connector复制到spark jars目录:
wget https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-hive-connector-2.3/1.3.1/paimon-hive-connector-2.3-1.3.1.jar
📌 步骤 3:配置 Spark 环境变量
进入spark conf目录
cd $SPARK_HOME/conf
(1) 修改 spark-env.sh
cp spark-env.sh.template spark-env.sh编辑 spark-env.sh,添加以下内容:
# 设置 Hadoop 配置目录(确保路径正确)
export HADOOP_CONF_DIR=/opt/apps/bigdata/hadoop-2.10.2/etc/hadoop
# 确保 Hive 环境变量被 Spark 读取
export HIVE_HOME=/opt/apps/bigdata/apache-hive-2.3.9-bin(2) 修改 spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf编辑 spark-defaults.conf,添加以下配置:
# 启用 Hive 集成
spark.sql.hive.metastore.version 2.3.9
spark.sql.hive.metastore.jars builtin # local:本地hivejar builtin:Spark 内置的 Hive Metastore jar 包
spark.sql.hive.metastore.uris thrift://192.168.1.211:9083
# 提交到 Yarn
spark.master yarn
spark.submit.deployMode client # 生产环境建议 cluster,测试用 client
spark.dynamicAllocation.enabled false # 避免 Yarn 动态分配导致的错误
spark.hadoop.hive.metastore.uris thrift://192.168.1.211:9083 💡 关键配置解释:
spark.sql.hive.metastore.version:必须与 Hive 2.3.9 一致。
spark.sql.hive.metastore.jars local:Spark 会自动使用本地 Hive 的 JAR(无需额外路径)。
spark.hadoop.hive.metastore.uris:确保 Yarn 作业也能连接到 Metastore。
📌 步骤 4:验证配置(重要!)
(1) 检查 Hive Metastore 是否运行
在192.168.1.211检查hive metasotre是否已经启动:
# 确保 Hive Metastore 服务已启动
ps -ef | grep metastore # 应看到类似:hive --service metastore如果未启动,执行:
hive --service metastore &(后台运行)。
(2) 测试 Spark SQL 连接 Hive
$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client在 Spark SQL 提示符中执行:
SHOW DATABASES; -- 应显示 Hive 中的数据库(如 default)
SELECT * FROM hive_table LIMIT 1; -- 测试读取 Hive 表✅ 成功标志:输出 Hive 的数据库列表或表数据。
📌 步骤 5:提交 Spark SQL 作业到 Yarn(生产环境)
提交示例(通过脚本)
创建脚本 spark_hive_job.sh:
#!/bin/bash
$SPARK_HOME/bin/spark-sql \
--master yarn \
--deploy-mode cluster \
--executor-memory 2g \
--num-executors 2 \
-e "SELECT * FROM default.your_hive_table LIMIT 10"执行脚本:
chmod +x spark_hive_job.sh
./spark_hive_job.sh💡 参数说明:
--executor-memory 2g:每个 Executor 内存(根据集群调整)。
--num-executors 2:启动 2 个 Executor。
--deploy-mode cluster:生产环境用cluster,测试用client。
🔧 常见问题解决
📌 最终验证流程
启动 Hive Metastore:
hive --service metastore &启动 Hadoop Yarn:
start-yarn.sh测试 Spark SQL:
/opt/spark/bin/spark-sql --master yarn --deploy-mode client提交作业:
/opt/spark/bin/spark-sql --master yarn -e "SHOW DATABASES"
✅ 总结:
用 Spark 3.3.0-bin-hadoop2.7 包
复制 Hive 配置 + JAR 到 Spark
配置
spark-defaults.conf指定 Hive 版本和 Metastore 地址通过
spark-sql --master yarn提交作业
评论