Spark启动时的master参数以及Spark的部署方法

发布时间:2021-07-09 17:11:45 作者:chen
来源:亿速云 阅读:968
# Spark启动时的master参数以及Spark的部署方法

## 一、Spark Master参数详解

### 1.1 Master参数概述
在Apache Spark中,`--master`参数用于指定集群的资源管理方式,是Spark作业提交时的核心配置之一。该参数决定了Spark应用的运行模式,直接影响资源调度和任务执行方式。

### 1.2 主要Master参数选项

#### 1. local模式
```bash
spark-submit --master local[*] ...

特点: - 无分布式计算能力 - 快速启动,适合调试 - 不支持集群特性(如Shuffle分区)

2. Spark Standalone模式

spark-submit --master spark://host:port ...

配置示例:

# 启动Master节点
./sbin/start-master.sh

# 启动Worker节点
./sbin/start-worker.sh spark://master-host:7077

3. YARN模式

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>

4. Mesos模式

spark-submit --master mesos://host:5050 ...

5. Kubernetes模式

spark-submit --master k8s://https://k8s-api-server:443 ...

1.3 参数选择建议

场景 推荐模式 原因
开发测试 local[*] 快速迭代
生产小集群 standalone 部署简单
Hadoop环境 yarn 资源整合
容器化环境 k8s 云原生支持

二、Spark部署方法详解

2.1 本地部署模式

单机安装步骤

  1. 下载Spark二进制包
wget https://archive.apache.org/dist/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
  1. 解压并配置环境变量
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin

2.2 Standalone集群部署

集群规划示例

节点 角色 配置
node1 Master + Worker 16C/32G
node2 Worker 8C/16G
node3 Worker 8C/16G

配置步骤

  1. 配置conf/spark-env.sh
export SPARK_MASTER_HOST='node1'
export SPARK_WORKER_CORES=8
export SPARK_WORKER_MEMORY=16g
  1. 配置conf/workers
node1
node2
node3
  1. 启动集群:
# 在Master节点执行
$SPARK_HOME/sbin/start-all.sh

2.3 YARN模式部署

前提条件

关键配置

  1. spark-defaults.conf配置:
spark.master            yarn
spark.yarn.jars         hdfs:///spark/jars/*
spark.driver.memory     4g
  1. 上传依赖库:
hadoop fs -mkdir /spark/jars
hadoop fs -put $SPARK_HOME/jars/* /spark/jars

2.4 Kubernetes部署

部署架构

Spark Submit → K8s API → Driver Pod → Executor Pods

操作流程

  1. 创建RBAC:
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
  1. 提交作业示例:
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

三、部署优化建议

3.1 资源配置原则

3.2 高可用配置

Standalone HA配置

  1. 使用ZooKeeper:
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"

YARN恢复配置

<property>
  <name>yarn.resourcemanager.recovery.enabled</name>
  <value>true</value>
</property>

3.3 监控配置

  1. 启用History Server:
$SPARK_HOME/sbin/start-history-server.sh
  1. Prometheus监控:
spark.metrics.conf.*.sink.prometheusServlet.class=org.apache.spark.metrics.sink.PrometheusServlet

四、常见问题解决方案

4.1 Master参数错误

现象Exception in thread "main" org.apache.spark.SparkException: A master URL must be set...

解决方案: 1. 检查--master参数格式 2. 验证集群地址可达性

4.2 资源分配不足

现象:Container被YARN/K8s杀死

优化方法:

spark.dynamicAllocation.enabled=true
spark.shuffle.service.enabled=true

4.3 网络连接问题

配置建议

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. 常见问题解决方案 可根据需要调整具体细节或补充特定环境的配置示例。

推荐阅读:
  1. spark-master 高可用测试
  2. Spark cluster 部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spark

上一篇:如何利用AOP实现在执行目标方法前获取参数占用内存大小

下一篇:Lambkit框架中Freemarker query标签的使用方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》