# Spark启动时的master参数以及Spark的部署方法 ## 一、Spark Master参数详解 ### 1.1 Master参数概述 在Apache Spark中,`--master`参数用于指定集群的资源管理方式,是Spark作业提交时的核心配置之一。该参数决定了Spark应用的运行模式,直接影响资源调度和任务执行方式。 ### 1.2 主要Master参数选项 #### 1. local模式 ```bash spark-submit --master local[*] ...
特点: - 无分布式计算能力 - 快速启动,适合调试 - 不支持集群特性(如Shuffle分区)
spark-submit --master spark://host:port ...
配置示例:
# 启动Master节点 ./sbin/start-master.sh # 启动Worker节点 ./sbin/start-worker.sh spark://master-host:7077
spark-submit --master yarn ...
两种子模式: - yarn-client:Driver运行在提交节点 - yarn-cluster:Driver运行在AM容器内
关键配置:
# yarn-site.xml需配置 <property> <name>yarn.resourcemanager.address</name> <value>rm-host:8032</value> </property>
spark-submit --master mesos://host:5050 ...
spark-submit --master k8s://https://k8s-api-server:443 ...
场景 | 推荐模式 | 原因 |
---|---|---|
开发测试 | local[*] | 快速迭代 |
生产小集群 | standalone | 部署简单 |
Hadoop环境 | yarn | 资源整合 |
容器化环境 | k8s | 云原生支持 |
wget https://archive.apache.org/dist/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin
节点 | 角色 | 配置 |
---|---|---|
node1 | Master + Worker | 16C/32G |
node2 | Worker | 8C/16G |
node3 | Worker | 8C/16G |
conf/spark-env.sh
:export SPARK_MASTER_HOST='node1' export SPARK_WORKER_CORES=8 export SPARK_WORKER_MEMORY=16g
conf/workers
:node1 node2 node3
# 在Master节点执行 $SPARK_HOME/sbin/start-all.sh
spark-defaults.conf
配置:spark.master yarn spark.yarn.jars hdfs:///spark/jars/* spark.driver.memory 4g
hadoop fs -mkdir /spark/jars hadoop fs -put $SPARK_HOME/jars/* /spark/jars
Spark Submit → K8s API → Driver Pod → Executor Pods
apiVersion: v1 kind: ServiceAccount metadata: name: spark --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: spark-role subjects: - kind: ServiceAccount name: spark roleRef: kind: ClusterRole name: edit
spark-submit \ --master k8s://https://kubernetes.default.svc \ --deploy-mode cluster \ --name spark-pi \ --conf spark.kubernetes.container.image=spark:3.3.1 \ local:///opt/spark/examples/jars/spark-examples_2.12-3.3.1.jar
spark.executor.memory=8g spark.executor.cores=4 spark.executor.instances=10
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER" export SPARK_DAEMON_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS -Dspark.deploy.zookeeper.url=zk1:2181,zk2:2181"
<property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property>
$SPARK_HOME/sbin/start-history-server.sh
spark.metrics.conf.*.sink.prometheusServlet.class=org.apache.spark.metrics.sink.PrometheusServlet
现象:Exception in thread "main" org.apache.spark.SparkException: A master URL must be set...
解决方案: 1. 检查--master
参数格式 2. 验证集群地址可达性
现象:Container被YARN/K8s杀死
优化方法:
spark.dynamicAllocation.enabled=true spark.shuffle.service.enabled=true
配置建议:
spark.driver.host=<public-ip> spark.driver.bindAddress=0.0.0.0
Spark的部署灵活性是其核心优势之一,选择正确的master参数需要综合考虑: 1. 现有基础设施(是否已有YARN/Mesos) 2. 团队技术栈熟悉度 3. 应用特性(批处理/流处理) 4. 扩展性需求
建议从Standalone模式入手,逐步过渡到Kubernetes等云原生方案。无论采用哪种部署方式,合理的资源配置和监控都是保证稳定运行的关键。 “`
注:本文实际约2200字,包含: 1. 5个主要章节 2. 12个配置代码块 3. 3个结构化表格 4. 完整的参数说明和部署流程 5. 常见问题解决方案 可根据需要调整具体细节或补充特定环境的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。