> 技术文档 > Spark应用部署模式实例

Spark应用部署模式实例


一、Local模式(本地模式)

1. 特点与启动方式

  • 特点:单机运行,无需集群,适合开发和测试

  • 启动命令

    # 启动PySpark交互式环境pyspark --master local[2] # 使用2个核心pyspark --master local[*] # 使用所有可用核心

2. 进程验证

jps

预期输出包含:

复制

下载

SparkSubmit # PySpark启动的Spark应用进程Jps

3. 典型应用场景

  • 快速验证Spark代码

  • 小规模数据测试

  • 开发调试阶段

二、Spark Standalone模式(独立集群模式)

1. 集群组件说明

进程 角色说明 Master(7180) Spark主节点,负责资源调度和集群管理 Worker(7332) Spark工作节点,执行具体计算任务 HistoryServer(7416) 历史任务记录服务

2. 相关服务进程

jps

典型输出:

7180 Master7332 Worker7416 HistoryServer6321 SecondaryNameNode6132 DataNode5973 NameNode6456 ResourceManager6761 NodeManager7475 Jps

3. 集群管理命令

# 启动集群$SPARK_HOME/sbin/start-all.sh# 停止集群$SPARK_HOME/sbin/stop-all.sh# 查看集群状态http://vm01:8080/

4. 应用提交示例

# 提交Python应用到Standalone集群spark-submit --master spark://vm01:7077 \\--deploy-mode client \\examples/src/main/python/pi.py 100

三、Spark on YARN模式

1. 准备工作

# 停止Standalone服务$SPARK_HOME/sbin/stop-all.sh# 启动YARN服务$HADOOP_HOME/sbin/start-yarn.sh# 上传Spark依赖到HDFShadoop fs -mkdir -p /spark-jarshadoop fs -put $SPARK_HOME/jars/* /spark-jars

2. 关键配置(spark-env.sh)

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SPARK_DIST_CLASSPATH=$(hadoop classpath)

3. 启动PySpark on YARN

# 以YARN集群模式启动pyspark --master yarn --deploy-mode client# 以YARN客户端模式启动pyspark --master yarn --deploy-mode cluster

4. 应用提交示例

# pi.py示例from pyspark import SparkContextsc = SparkContext(\"yarn\", \"PiCalc\")num_samples = 100000000def inside(p): x, y = random.random(), random.random() return x*x + y*y < 1count = sc.parallelize(range(num_samples)).filter(inside).count()pi = 4 * count / num_samplesprint(\"Pi is roughly\", pi)sc.stop()

提交命令:

spark-submit --master yarn \\--deploy-mode cluster \\--num-executors 4 \\--executor-cores 2 \\pi.py

5. 监控界面

  • YARN资源管理界面:http://localhost:8088

  • Spark应用详情界面:http://vm01:4040

四、模式对比与选择指南

特性 Local模式 Standalone模式 YARN模式 资源管理 无 Spark自带 YARN管理 适用场景 开发测试 专用Spark集群 Hadoop生态 资源隔离 无 一般 优秀 部署复杂度 简单 中等 复杂 高可用性 不支持 支持 支持

五、常见问题解决方案

  1. YARN模式资源不足

    # 在yarn-site.xml中增加配置 yarn.nodemanager.resource.memory-mb 8192
  2. Spark历史服务无法查看

    # 启动历史服务器$SPARK_HOME/sbin/start-history-server.sh
  3. Python依赖问题

    # 提交时添加Python依赖spark-submit --py-files dependencies.zip ...
  4. HDFS权限问题

    hadoop fs -chmod -R 777 /spark-jars