组件配置
Ubuntu20.04, JDK8 Hadoop3.3.4, Hive3.1.3, MYSQL8.0.42 Spark3.4.4
Spark3.4.4 安装配置
一、Spark 安装前置条件(先确认)
-
- Hadoop 集群(HDFS+YARN)已启动(
start-dfs.sh+start-yarn.sh);
- Hadoop 集群(HDFS+YARN)已启动(
-
- jps
-
- Hive Metastore 服务已启动(
hive --service metastore); 【重开一个终端,运行hive,如果正常进入,则表示Hive Metastore 服务已启动】 【这个终端不要关,另开一个终端来运行spark。 不然就要让hive服务后台运行:
- Hive Metastore 服务已启动(
# 【这一步会影响:在 Spark Shell 中执行命令,验证是否能读取 Hive 元数据时出错】
# 后台启动 Metastore,日志输出到 hive_metastore.log(不占终端)
nohup hive --service metastore > hive_metastore.log 2>&1 &
-
- JDK8、Hadoop、Hive 的环境变量已全局生效(
source ~/.bashrc)。
- JDK8、Hadoop、Hive 的环境变量已全局生效(
二、Spark3.4.4 安装配置步骤
第一步:解压安装包(标准路径)
# 假设 Spark 安装包在 /home/db2305070135 目录下
cd /home/db2305070135
# 解压到 /usr/local(和 Hadoop/Hive 统一目录)
sudo tar -zxvf spark-3.4.4-bin-hadoop3.tgz -C /usr/local/
# 修改权限(避免后续操作权限不足)
sudo chown -R $USER:$USER /usr/local/spark-3.4.4-bin-hadoop3
# 给用户加软链接
ln -s /usr/local/spark-3.4.4-bin-hadoop3 spark-3.4.4
第二步:配置 Spark 环境变量(加入 ~/.bashrc)
# 追加 Spark 配置到 ~/.bashrc
echo '
# Spark 环境变量
export SPARK_HOME=/usr/local/spark-3.4.4-bin-hadoop3
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
# Spark 依赖 Hadoop 配置(关键:让 Spark 识别 Hadoop 集群)
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
' >> ~/.bashrc
# 生效配置
source ~/.bashrc
第三步:配置 Spark 核心文件(适配 Hive)
Spark 要读取 Hive 元数据,需要把 Hive 的配置文件和 MySQL 驱动包复制到 Spark 目录:
# 1. 复制 Hive 配置文件到 Spark 的 conf 目录(核心:让 Spark 识别 Hive 元数据)
cp /usr/local/apache-hive-3.1.3-bin/conf/hive-site.xml /usr/local/spark-3.4.4-bin-hadoop3/conf/
# 2. 复制 MySQL 驱动包到 Spark 的 jars 目录(核心:Spark 连接 MySQL 读 Hive 元数据)
cp /usr/local/apache-hive-3.1.3-bin/lib/mysql-connector-j-8.0.33.jar /usr/local/spark-3.4.4-bin-hadoop3/jars/
第四步:修改 Spark 默认配置(优化适配)
# 进入 Spark 配置目录
cd /usr/local/spark-3.4.4-bin-hadoop3/conf
# 复制模板文件为正式配置
cp spark-env.sh.template spark-env.sh
# 编辑 spark-env.sh,添加以下内容
nano spark-env.sh
#在文件末尾添加:
# JDK 路径(和全局配置一致)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# Hadoop 配置路径(让 Spark 对接 Hadoop 集群)
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.4/etc/hadoop
# Spark 驱动程序内存(新手建议设 1G,避免内存不足)
export SPARK_DRIVER_MEMORY=1g
三、验证 Spark 安装(核心:测试 Hive 集成)
# 启动 Spark Shell(带 Hive 支持)
spark-shell --master yarn
【警告:
Unable to load native-hadoop library:这是一个常见警告,说明 Spark 没有加载到 Hadoop 的本地优化库,会自动回退到纯 Java 实现,不影响功能。
Neither spark.yarn.jars nor spark.yarn.archive is set:这也是一个警告,说明 Spark 会自动上传依赖包到 YARN,稍微慢一点,但能正常运行。
】
# 在 Spark Shell 中执行命令,验证是否能读取 Hive 元数据
spark.sql("show databases").show()
spark.sql("create database spark_test").show()
spark.sql("show databases").show()
- 如果能看到 Hive 中创建的
test_db和 Spark 新建的spark_test,说明 Spark 已成功集成 Hive; - 执行
:quit退出 Spark Shell。
四、Spark 常用命令
# 启动 Spark Shell(本地模式)
spark-shell --master local[*]
# 启动 Spark Shell(YARN 集群模式,推荐)
spark-shell --master yarn
# 提交 Spark 应用(示例:运行官方 Pi 计算程序)
spark-submit --master yarn --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.4.4.jar 10
# 停止 Spark 相关服务(如果启动了 Spark Standalone 集群)
stop-all.sh # 注意:Spark 的 stop-all.sh 是 standalone 模式用的,你用 YARN 模式无需执行
五、总结
- Spark 安装核心是「集成 Hive」:复制
hive-site.xml和 MySQL 驱动包是关键; - 环境变量配置到
~/.bashrc能让 Spark 全局生效,避免路径问题; - 优先用
--master yarn模式启动 Spark,适配你的 Hadoop 集群; - 验证时通过
spark.sql操作 Hive 数据库,确认集成成功。