您好,登录后才能下订单哦!
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。