news 2026/5/5 14:02:28

保姆级教程:在CentOS7上从Local到Yarn,一步步搞定Spark 3.5.7多模式部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在CentOS7上从Local到Yarn,一步步搞定Spark 3.5.7多模式部署

从零到精通:CentOS7上Spark 3.5.7全模式部署实战指南

当你第一次面对一台全新的CentOS7服务器,想要部署Spark进行大数据处理时,是否感到无从下手?本文将带你从最基础的Local模式开始,逐步深入到StandAlone集群部署,最终实现与Hadoop YARN环境的无缝集成。无论你是运维工程师还是数据开发新手,这份手把手的实战指南都能让你少走弯路。

1. 环境准备与基础配置

在开始部署之前,我们需要确保系统环境满足Spark运行的基本要求。一台干净的CentOS7服务器是最理想的起点,这样可以避免各种依赖冲突问题。

1.1 系统基础环境检查

首先确认系统版本和内核信息:

cat /etc/redhat-release uname -r

建议使用最小化安装的CentOS7系统,这样可以减少不必要的软件冲突。如果系统已经安装了一些组件,建议先进行清理:

# 检查已安装的Java版本 java -version # 如有旧版本Java,建议卸载 yum remove java-*

1.2 依赖组件安装

Spark运行需要Java环境,推荐使用JDK8:

yum install -y java-1.8.0-openjdk-devel

验证Java安装是否成功:

java -version javac -version

对于Python支持,建议使用Anaconda创建独立环境:

wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh bash Anaconda3-2023.07-2-Linux-x86_64.sh -b -p /opt/anaconda3

2. Local模式部署与验证

Local模式是Spark最简单的运行方式,适合快速验证和开发测试。

2.1 Spark安装与配置

下载Spark 3.5.7二进制包:

wget https://dlcdn.apache.org/spark/spark-3.5.7/spark-3.5.7-bin-hadoop3.tgz -P /opt tar -zxvf /opt/spark-3.5.7-bin-hadoop3.tgz -C /opt ln -s /opt/spark-3.5.7-bin-hadoop3 /opt/spark

配置环境变量:

echo 'export SPARK_HOME=/opt/spark' >> /etc/profile echo 'export PATH=$PATH:$SPARK_HOME/bin' >> /etc/profile source /etc/profile

2.2 Python环境隔离

为避免Python包冲突,创建专用环境:

conda create -n pyspark python=3.9 -y conda activate pyspark pip install pyspark numpy pandas

配置PySpark使用特定Python环境:

echo 'export PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark/bin/python' >> /etc/profile source /etc/profile

2.3 Local模式测试

启动PySpark shell:

pyspark

在交互式环境中运行简单测试:

data = [1, 2, 3, 4, 5] distData = sc.parallelize(data) print(distData.map(lambda x: x*x).collect())

访问Web UI验证运行状态:

http://<服务器IP>:4040

3. StandAlone集群部署

StandAlone模式是Spark自带的集群管理模式,适合中小规模部署。

3.1 多节点环境准备

假设我们有三台服务器:

  • master: 192.168.1.101
  • worker1: 192.168.1.102
  • worker2: 192.168.1.103

在所有节点上配置hosts文件:

echo "192.168.1.101 master 192.168.1.102 worker1 192.168.1.103 worker2" >> /etc/hosts

配置SSH免密登录(在master节点执行):

ssh-keygen -t rsa ssh-copy-id master ssh-copy-id worker1 ssh-copy-id worker2

3.2 Spark集群配置

编辑workers文件:

echo "worker1 worker2" > $SPARK_HOME/conf/workers

配置spark-env.sh:

cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh echo 'export SPARK_MASTER_HOST=master export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=4 export SPARK_WORKER_MEMORY=4g' >> $SPARK_HOME/conf/spark-env.sh

3.3 集群启动与管理

启动Master节点:

$SPARK_HOME/sbin/start-master.sh

启动Worker节点(会自动根据workers文件启动):

$SPARK_HOME/sbin/start-workers.sh

集群管理命令对比:

命令功能适用场景
start-master.sh启动Master进程首次启动
start-workers.sh启动所有Worker集群扩展
start-all.sh启动Master和Worker全新启动
stop-all.sh停止所有进程维护关闭

访问Master Web UI:

http://master:8080

4. YARN模式集成

YARN模式允许Spark作为Hadoop集群的一个应用运行,充分利用现有资源。

4.1 Hadoop环境准备

确保Hadoop集群正常运行,并检查YARN配置:

yarn node -list

配置Spark使用YARN:

echo 'export HADOOP_CONF_DIR=/etc/hadoop/conf export YARN_CONF_DIR=/etc/hadoop/conf' >> $SPARK_HOME/conf/spark-env.sh

4.2 YARN模式提交应用

客户端模式(适合交互式开发):

spark-submit --master yarn --deploy-mode client \ --num-executors 2 \ --executor-memory 2G \ --executor-cores 2 \ /path/to/your/app.py

集群模式(适合生产环境):

spark-submit --master yarn --deploy-mode cluster \ --num-executors 4 \ --executor-memory 4G \ --executor-cores 2 \ /path/to/your/app.py

4.3 资源调优建议

YARN模式下资源配置参考表:

参数建议值说明
--num-executors集群节点数×2-3执行器数量
--executor-memory节点内存的60-70%单执行器内存
--executor-cores节点核数的70%单执行器核数
spark.yarn.executor.memoryOverheadexecutor-memory的10-15%堆外内存

5. 生产环境优化与监控

5.1 日志与历史服务器配置

配置事件日志记录:

echo 'spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/spark-logs spark.history.fs.logDirectory hdfs://master:8020/spark-logs' > $SPARK_HOME/conf/spark-defaults.conf

启动历史服务器:

$SPARK_HOME/sbin/start-history-server.sh

5.2 安全配置建议

  1. 使用专用用户运行Spark,避免root权限
  2. 配置Kerberos认证
  3. 限制Web UI访问IP
  4. 定期清理日志和临时文件

5.3 性能调优技巧

常见性能问题排查表:

现象可能原因解决方案
任务执行慢数据倾斜重分区或加盐
Executor丢失内存不足增加内存或调整分区
Driver OOM收集数据过多使用分布式操作替代collect
网络超时序列化效率低使用Kryo序列化

6. 常见问题与解决方案

在实际部署过程中,难免会遇到各种问题。以下是几个典型问题的解决方法:

问题1:Python版本冲突

症状:PySpark执行时报错找不到Python模块

解决:

# 明确指定Python路径 export PYSPARK_PYTHON=/path/to/your/python

问题2:端口冲突

症状:Master或Worker启动失败

解决:

# 查看端口占用 netstat -tulnp | grep 8080 # 修改默认端口 export SPARK_MASTER_WEBUI_PORT=8081

问题3:HDFS权限问题

症状:YARN模式无法读取HDFS数据

解决:

# 确保Spark用户有HDFS访问权限 hadoop fs -chmod -R 777 /user/spark

问题4:内存不足

症状:任务频繁失败或被终止

解决:

# 调整内存配置 spark-submit --executor-memory 8G ...

在部署Spark集群时,建议按照Local→StandAlone→YARN的顺序逐步验证,每个阶段都做好测试和文档记录。遇到问题时,首先检查日志文件(通常在$SPARK_HOME/logs目录下),大多数错误信息都能在那里找到线索。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 14:01:05

本地优先智能健康报告系统:从Markdown日志到自动化健康管理

1. 项目概述&#xff1a;一个本地优先的智能健康报告系统如果你和我一样&#xff0c;长期使用Markdown记录每日的饮食、运动、体重和用药情况&#xff0c;那么你很可能也面临过同样的困境&#xff1a;这些零散的数据躺在硬盘里&#xff0c;除了偶尔翻看&#xff0c;很难形成系统…

作者头像 李华
网站建设 2026/5/5 14:00:00

对比不同模型在 Taotoken 上的响应速度与输出效果差异

不同模型在 Taotoken 上的响应与输出表现观察 1. 测试环境与模型选择 本次测试基于 Taotoken 平台提供的多模型接入能力&#xff0c;选取了平台模型广场中常见的三种模型进行对比观察。测试环境为本地开发机通过标准 HTTP 请求调用 Taotoken API&#xff0c;网络延迟稳定在 5…

作者头像 李华
网站建设 2026/5/5 13:59:57

NEON-SOUL:AI智能体灵魂压缩与可审计身份构建实践

1. 项目概述&#xff1a;为AI灵魂“瘦身”与“建档” 如果你正在构建或使用像OpenClaw这样的AI智能体&#xff0c;你可能会遇到一个头疼的问题&#xff1a;为了让AI记住“自己是谁”&#xff0c;你需要在每次对话开始时&#xff0c;向它的上下文窗口里塞进一份长达数万字的“灵…

作者头像 李华
网站建设 2026/5/5 13:58:53

Firefly CAM-3576系列:超小型RK3576 SBC在边缘AI与嵌入式应用中的优势

1. Firefly CAM-3576系列&#xff1a;专为商业、工业和汽车应用设计的超小型RK3576 SBC在嵌入式系统和边缘计算领域&#xff0c;小型化与高性能的结合一直是开发者追求的目标。Firefly Technology最新推出的CAM-3576系列单板计算机(SBC)正是这一趋势的杰出代表。这款仅3838毫米…

作者头像 李华
网站建设 2026/5/5 13:58:38

别再截图了!用Axure RP 10 + ECharts 5.5,5分钟搞定可交互的动态图表原型

别再截图了&#xff01;用Axure RP 10 ECharts 5.5&#xff0c;5分钟搞定可交互的动态图表原型 上周和团队过需求评审时&#xff0c;产品经理小李演示的原型让我眼前一亮——页面上的折线图竟然能实时响应鼠标悬停显示数据点&#xff0c;点击图例还能动态切换数据系列。会后我…

作者头像 李华