从零开始在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、ResourceManageragent1IPaddress2系统盘4TB 数据盘12×4TB HDDDataNode、NodeManager、JournalNodeagent2IPaddress3系统盘4TB 数据盘12×4TB HDDDataNode、NodeManager、JournalNodeagent3IPaddress4系统盘4TB 数据盘12×4TB HDDDataNode、NodeManager、JournalNode2. 基础环境配置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 EOF2.2 关闭防火墙与SELinux# 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service # 关闭SELinux临时生效 setenforce 0 # 永久关闭需重启 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config2.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 done2.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/spark4.2 配置环境变量cat /etc/profile EOF # Spark环境变量 export SPARK_HOME/usr/local/spark export PATH\$PATH:\$SPARK_HOME/bin:\$SPARK_HOME/sbin EOF # 使配置生效 source /etc/profile4.3 配置Spark核心文件4.3.1 配置spark-env.shcd $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_HOSTserver1 export SPARK_WORKER_MEMORY8g # 根据实际内存调整 export SPARK_EXECUTOR_MEMORY4g export SPARK_DRIVER_MEMORY2g EOF4.3.2 配置workers文件cp workers.template workers cat workers EOF server1 agent1 agent2 agent3 EOF4.3.3 配置spark-defaults.confcp 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-history4.4 分发配置文件到所有节点for node in agent1 agent2 agent3; do scp -r $SPARK_HOME/conf root$node:$SPARK_HOME/ done4.5 启动Spark集群# 启动主节点和工作节点 start-all.sh # 启动历史服务器 start-history-server.sh # 验证进程server1节点 jps | grep -E Master|HistoryServer # 验证进程agent节点 jps | grep Worker5. 验证Spark部署5.1 访问Web UI打开浏览器访问以下地址验证集群状态Spark Master UI: http://server1:8080Spark History Server: http://server1:180805.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 \ 1005.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),仅供参考