Spark应用部署模式实例
一、Local模式(本地模式)
1. 特点与启动方式
-
特点:单机运行,无需集群,适合开发和测试
-
启动命令:
# 启动PySpark交互式环境pyspark --master local[2] # 使用2个核心pyspark --master local[*] # 使用所有可用核心
2. 进程验证
jps
预期输出包含:
复制
下载
SparkSubmit # PySpark启动的Spark应用进程Jps
3. 典型应用场景
-
快速验证Spark代码
-
小规模数据测试
-
开发调试阶段
二、Spark Standalone模式(独立集群模式)
1. 集群组件说明
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
四、模式对比与选择指南
五、常见问题解决方案
-
YARN模式资源不足
# 在yarn-site.xml中增加配置 yarn.nodemanager.resource.memory-mb 8192
-
Spark历史服务无法查看
# 启动历史服务器$SPARK_HOME/sbin/start-history-server.sh
-
Python依赖问题
# 提交时添加Python依赖spark-submit --py-files dependencies.zip ...
-
HDFS权限问题
hadoop fs -chmod -R 777 /spark-jars