Spark目前支持的部署模式。
一、本地模式(Local Mode)
特点:
- 在单台机器上运行,无需集群。
- 主要用于开发、测试和调试。
- 所有组件(Driver、Executor)在同一个 JVM 中运行。
启动命令:
bash
spark-submit --master local[*] your_app.py
local
:使用 1 个线程。local[N]
:使用 N 个线程。local[*]
:使用所有可用 CPU 核心。
二、独立集群模式(Standalone Mode)
特点:
- Spark 自带的集群管理器,无需依赖第三方系统。
- 由 Master 节点(资源调度)和 Worker 节点(执行任务)组成。
- 支持静态资源分配或动态资源分配。
部署步骤:
- 在
$SPARK_HOME/conf/spark-env.sh
中配置:bash
export SPARK_MASTER_HOST=hadoop-master export SPARK_WORKER_MEMORY=2g
- 启动集群:
bash
$SPARK_HOME/sbin/start-master.sh # 主节点 $SPARK_HOME/sbin/start-worker.sh spark://hadoop-master:7077 # 从节点
- 提交应用:
bash
spark-submit --master spark://hadoop-master:7077 your_app.py
三、Apache Mesos
特点:
- 通用的集群资源管理器,支持多框架(Spark、Hadoop 等)。
- 细粒度的资源分配,支持动态资源共享。
- 适合混合工作负载的场景。
部署步骤:
- 安装 Mesos 集群(Master 和 Slave 节点)。
- 配置 Spark 连接 Mesos:
bash
spark-submit --master mesos://mesos-master:5050 your_app.py
- 支持两种模式:
- Mesos Cluster Mode:Driver 在集群内运行。
- Mesos Client Mode:Driver 在提交客户端运行。
四、Hadoop YARN
特点:
- Hadoop 的资源管理器,与 HDFS 深度集成。
- 主流大数据平台的首选部署模式。
- 支持两种运行模式:
- Cluster Mode:Driver 运行在 YARN 集群内部。
- Client Mode:Driver 运行在提交客户端(如本地机器)。
部署步骤:
- 确保 Hadoop YARN 集群正常运行。
- 配置
$SPARK_HOME/conf/spark-env.sh
:bash
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
- 提交应用:
bash
# Cluster Mode spark-submit --master yarn --deploy-mode cluster your_app.py# Client Mode spark-submit --master yarn --deploy-mode client your_app.py
五、Kubernetes
特点:
- 云原生容器编排平台,支持自动化部署和扩缩容。
- Spark 从 2.3 版本开始支持原生 Kubernetes 集成。
- 无需预先部署 Spark 集群,按需创建容器。
部署步骤:
- 配置 Kubernetes 集群。
- 提交 Spark 应用:
bash
spark-submit \--master k8s://https://<k8s-apiserver>:<port> \--deploy-mode cluster \--name spark-pi \--conf spark.executor.instances=3 \--conf spark.kubernetes.container.image=spark:3.3.2 \local:///path/to/your_app.py
六、云服务提供商集成
特点:
- 各大云厂商提供托管 Spark 服务,简化运维。
- 支持自动扩缩容和高可用性。
常见服务:
- AWS EMR:托管 Hadoop、Spark 集群。
- Google Cloud Dataproc:快速部署 Spark 集群。
- Azure HDInsight:支持 Spark 的云数据服务。
- 阿里云 E-MapReduce:集成 Spark、Hadoop 的大数据平台。
七、选择建议
场景 | 推荐模式 |
---|---|
开发测试 | 本地模式 |
独立 Spark 集群 | Standalone 模式 |
混合工作负载集群 | Mesos |
已有 Hadoop 环境 | YARN |
云原生环境 | Kubernetes |
托管服务 | 云厂商 Spark 服务 |
八、关键配置参数
--master
:指定集群管理器(如local
、spark://host:port
、yarn
)。--deploy-mode
:Driver 运行位置(cluster
或client
)。--executor-memory
:每个 Executor 的内存大小。--num-executors
:启动的 Executor 数量。--driver-memory
:Driver 进程的内存大小。