spark+hive-分布式-大数据项目篇 3——Spark3.4.4 安装配置

4 阅读3分钟

组件配置

Ubuntu20.04, JDK8 Hadoop3.3.4, Hive3.1.3, MYSQL8.0.42 Spark3.4.4

Spark3.4.4 安装配置

一、Spark 安装前置条件(先确认)

    1. Hadoop 集群(HDFS+YARN)已启动(start-dfs.sh + start-yarn.sh);
    1. jps
    1. Hive Metastore 服务已启动(hive --service metastore); 【重开一个终端,运行hive,如果正常进入,则表示Hive Metastore 服务已启动】 【这个终端不要关,另开一个终端来运行spark。 不然就要让hive服务后台运行:
# 【这一步会影响:在 Spark Shell 中执行命令,验证是否能读取 Hive 元数据时出错】
# 后台启动 Metastore,日志输出到 hive_metastore.log(不占终端)
nohup hive --service metastore > hive_metastore.log 2>&1 &
    1. JDK8、Hadoop、Hive 的环境变量已全局生效(source ~/.bashrc)。

二、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 模式无需执行

五、总结

  1. Spark 安装核心是「集成 Hive」:复制 hive-site.xml 和 MySQL 驱动包是关键;
  2. 环境变量配置到 ~/.bashrc 能让 Spark 全局生效,避免路径问题;
  3. 优先用 --master yarn 模式启动 Spark,适配你的 Hadoop 集群;
  4. 验证时通过 spark.sql 操作 Hive 数据库,确认集成成功。