从零开始:在openEuler上部署Spark 3.2.2的完整指南

从零开始:在openEuler上部署Spark 3.2.2的完整指南

从零开始:在openEuler上部署Spark 3.2.2的完整指南

【免费下载链接】bigdataThis repository contains common information and common tools of bigdata.项目地址: https://gitcode.com/openeuler/bigdata

前往项目官网免费下载:https://ar.openeuler.org/ar/

Spark作为一款强大的分布式计算框架,在大数据处理领域扮演着至关重要的角色。本指南将带你快速掌握在openEuler操作系统上部署Spark 3.2.2的核心步骤,从环境准备到集群配置,让你轻松开启大数据处理之旅。

1. 环境要求与准备

1.1 软件版本建议

部署Spark 3.2.2前,请确保系统中已安装以下软件:

软件版本要求获取方法
OpenJDK1.8.0_342通过yum安装或从官网获取
Hadoop3.3.4官网下载,aarch64架构需参考hadoop移植指南
Spark3.2.2官网下载,aarch64架构需参考spark移植指南

1.2 硬件与操作系统要求

  • 硬件配置:最低要求为任意CPU、1GB内存、10GB硬盘,实际生产环境需根据数据量调整
  • 操作系统:支持openEuler-20.03、openEuler-22.03及CentOS 7.4~7.6版本

1.3 集群环境规划(以4节点为例)

节点名称IP地址硬件配置部署服务
server1IPaddress1系统盘4TB + 数据盘12×4TB HDDNamenode、ResourceManager
agent1IPaddress2系统盘4TB + 数据盘12×4TB HDDDataNode、NodeManager、JournalNode
agent2IPaddress3系统盘4TB + 数据盘12×4TB HDDDataNode、NodeManager、JournalNode
agent3IPaddress4系统盘4TB + 数据盘12×4TB HDDDataNode、NodeManager、JournalNode

2. 基础环境配置

2.1 配置主机名与网络

# 修改主机名(分别在各节点执行) hostnamectl set-hostname server1 --static # server1节点 hostnamectl set-hostname agent1 --static # agent1节点 # ...以此类推设置其他节点 # 配置hosts文件(所有节点) cat >> /etc/hosts << EOF IPaddress1 server1 IPaddress2 agent1 IPaddress3 agent2 IPaddress4 agent3 EOF

2.2 关闭防火墙与SELinux

# 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service # 关闭SELinux(临时生效) setenforce 0 # 永久关闭(需重启) sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.3 配置SSH免密登录

# 生成密钥(所有节点) ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa # 配置免密登录(在server1执行) for node in server1 agent1 agent2 agent3; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$node done

2.4 安装Java环境

# 安装OpenJDK yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel # 验证安装 java -version # 应显示1.8.0_342版本信息

3. 部署Hadoop(前置依赖)

在部署Spark前需先完成Hadoop集群搭建,具体步骤参考Hadoop部署指南。主要验证项:

  • HDFS文件系统可正常读写
  • YARN资源管理器状态正常
  • 所有节点进程正常启动

4. Spark 3.2.2部署步骤

4.1 下载与解压Spark安装包

# 下载Spark 3.2.2(若官网下载慢可使用国内镜像) wget https://archive.apache.org/dist/spark/spark-3.2.2/spark-3.2.2-bin-hadoop3.2.tgz # 解压至安装目录 tar zxf spark-3.2.2-bin-hadoop3.2.tgz -C /usr/local/ ln -s /usr/local/spark-3.2.2-bin-hadoop3.2 /usr/local/spark

4.2 配置环境变量

cat >> /etc/profile << EOF # Spark环境变量 export SPARK_HOME=/usr/local/spark export PATH=\$PATH:\$SPARK_HOME/bin:\$SPARK_HOME/sbin EOF # 使配置生效 source /etc/profile

4.3 配置Spark核心文件

4.3.1 配置spark-env.sh
cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh cat >> spark-env.sh << EOF export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_HOME=/usr/local/hadoop export HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop export SPARK_MASTER_HOST=server1 export SPARK_WORKER_MEMORY=8g # 根据实际内存调整 export SPARK_EXECUTOR_MEMORY=4g export SPARK_DRIVER_MEMORY=2g EOF
4.3.2 配置workers文件
cp workers.template workers cat > workers << EOF server1 agent1 agent2 agent3 EOF
4.3.3 配置spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf cat >> spark-defaults.conf << EOF spark.eventLog.enabled true spark.eventLog.dir hdfs://server1:9000/spark-history spark.history.fs.logDirectory hdfs://server1:9000/spark-history spark.yarn.historyServer.address server1:18080 spark.serializer org.apache.spark.serializer.KryoSerializer EOF # 创建历史日志目录 hdfs dfs -mkdir -p /spark-history hdfs dfs -chmod 777 /spark-history

4.4 分发配置文件到所有节点

for node in agent1 agent2 agent3; do scp -r $SPARK_HOME/conf root@$node:$SPARK_HOME/ done

4.5 启动Spark集群

# 启动主节点和工作节点 start-all.sh # 启动历史服务器 start-history-server.sh # 验证进程(server1节点) jps | grep -E "Master|HistoryServer" # 验证进程(agent节点) jps | grep Worker

5. 验证Spark部署

5.1 访问Web UI

打开浏览器访问以下地址验证集群状态:

  • Spark Master UI: http://server1:8080
  • Spark History Server: http://server1:18080

5.2 运行示例程序

# 运行PI计算示例 spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.2.2.jar \ 100

5.3 查看测试报告

部署完成后可参考类似测试报告的验证方式,确保Spark集群功能正常:

图:Spark SQL查询测试结果示例(类似验证方式可参考Doris测试报告)

6. 常见问题解决

6.1 启动失败:Worker无法连接Master

  • 检查防火墙是否完全关闭
  • 验证hosts文件配置是否正确
  • 确保SPARK_MASTER_HOST配置正确

6.2 YARN资源不足

  • 调整yarn-site.xml中的内存配置
  • 减少Spark应用的executor内存请求
  • 增加集群节点资源

6.3 历史服务器无数据

  • 确认HDFS历史目录权限是否为777
  • 检查spark-defaults.conf中eventLog配置是否正确

7. 参考文档

  • Spark官方文档
  • openEuler bigdata项目文档
  • Spark移植指南
  • Hadoop部署指南

【免费下载链接】bigdataThis repository contains common information and common tools of bigdata.项目地址: https://gitcode.com/openeuler/bigdata

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考