温馨提示×

温馨提示×

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

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

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

发布时间:2021-07-09 17:11:45 来源:亿速云 阅读:986 作者:chen 栏目:编程语言
# Spark启动时的master参数以及Spark的部署方法 ## 一、Spark Master参数详解 ### 1.1 Master参数概述 在Apache Spark中,`--master`参数用于指定集群的资源管理方式,是Spark作业提交时的核心配置之一。该参数决定了Spark应用的运行模式,直接影响资源调度和任务执行方式。 ### 1.2 主要Master参数选项 #### 1. local模式 ```bash spark-submit --master local[*] ... 
  • local:单机单线程运行
  • local[K]:使用K个工作线程(推荐开发测试使用)
  • local[*]:自动匹配CPU核心数

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

2. Spark Standalone模式

spark-submit --master spark://host:port ... 
  • 需要提前启动Spark集群
  • 默认Master端口:7077
  • 支持集群资源动态分配

配置示例:

# 启动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 ... 
  • 支持细粒度资源调度
  • 需要部署Mesos集群

5. Kubernetes模式

spark-submit --master k8s://https://k8s-api-server:443 ... 
  • 需要配置RBAC和ServiceAccount
  • 支持动态资源伸缩

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模式部署

前提条件

  • 已安装Hadoop集群(2.7+)
  • 配置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 资源配置原则

  • Executor内存 = (总内存 - 1GB) / 每个节点的executor数量
  • 推荐配置:
     spark.executor.memory=8g spark.executor.cores=4 spark.executor.instances=10 

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

向AI问一下细节

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

AI