Standalone模式介绍

1. 什么是 Standalone 模式?

Spark Standalone 是 Apache Spark 自带的集群管理器,无需依赖外部系统(如 Hadoop YARN 或 Kubernetes),可直接部署 Spark 集群。它提供了简单的资源调度和任务管理功能,适合快速搭建测试环境或轻量级生产集群。

2. 核心组件

Standalone 模式采用 主从架构(Master-Slave)

  1. Master 节点

    • 集群的主控制器,负责资源调度和任务分配。
    • 维护 Worker 节点的注册信息和资源状态。
    • 接收客户端提交的应用程序,并为其分配资源。
  2. Worker 节点

    • 运行在工作节点上,负责启动和管理 Executor 进程。
    • 向 Master 注册并汇报可用资源(内存、CPU)。
    • 监控 Executor 的运行状态,并向 Master 反馈。
  3. Executor

    • 由 Worker 启动,负责执行具体的任务(Task)。
    • 为应用程序提供计算资源,并缓存中间数据。
3. 工作流程
  1. 集群启动

    • 启动 Master 进程,监听指定端口(默认 7077)。
    • 各 Worker 节点向 Master 注册,汇报可用资源。
  2. 应用提交

    • 客户端(如 spark-submit)向 Master 提交应用程序。
    • Master 根据资源情况,为应用分配 Worker 节点并启动 Executor。
  3. 任务执行

    • Driver 分解作业为 DAG(有向无环图),并将任务发送给 Executor。
    • Executor 执行任务并将结果返回给 Driver。
  4. 资源回收

    • 应用完成后,Executor 被 Worker 回收,资源释放。
4. 高可用性(HA)

为避免单点故障,Standalone 支持两种 HA 模式:

  1. 基于 ZooKeeper 的 HA

    • 多个 Master 节点通过 ZooKeeper 选举出 Active Master,其余为 Standby。
    • 配置示例:

      bash

      # spark-env.sh
      export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER \
      -Dspark.deploy.zookeeper.url=zk1:2181,zk2:2181,zk3:2181 \
      -Dspark.deploy.zookeeper.dir=/spark"
      
  2. 基于文件系统的恢复

    • Master 将状态保存到文件系统(如本地磁盘或 HDFS),重启时恢复。
    • 配置示例:

      bash

      # spark-env.sh
      export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM \
      -Dspark.deploy.recoveryDirectory=/path/to/recovery/dir"
      
5. 资源调度策略

Standalone 支持两种调度策略:

  1. FIFO(默认)

    • 应用按提交顺序依次执行,前一个完成后才调度下一个。
  2. 公平调度(Fair Scheduler)

    • 多个应用可同时运行,资源按权重动态分配。
    • 配置示例:

      bash

      # spark-defaults.conf
      spark.scheduler.mode FAIR
      
6. 配置与优化

关键配置参数(位于 $SPARK_HOME/conf/spark-env.sh):

参数 说明
SPARK_MASTER_HOST Master 节点的 IP 地址或主机名。
SPARK_MASTER_PORT Master 监听的端口(默认 7077)。
SPARK_WORKER_MEMORY 每个 Worker 可用的内存总量(如 8g)。
SPARK_WORKER_CORES 每个 Worker 可用的 CPU 核心数。
SPARK_WORKER_PORT Worker 监听的端口(默认随机)。
SPARK_WORKER_WEBUI_PORT Worker Web UI 端口(默认 8081)。
SPARK_DAEMON_MEMORY Master/Worker 进程的内存(默认 1g)。
7. 启动与监控
  1. 启动集群

    bash

    # 在 Master 节点执行
    start-master.sh  # 启动 Master
    start-slaves.sh  # 启动所有 Worker(需在 slaves 文件中配置)
    
  2. Web UI

    • Master UI:http://master-ip:8080
      查看集群状态、Worker 信息、应用列表等。
    • Worker UI:http://worker-ip:8081
      查看特定 Worker 的资源使用情况和 Executor 信息。
  3. 停止集群

    bash

    stop-all.sh  # 停止所有 Master 和 Worker
    
8. 优缺点
优点 缺点
部署简单,无需依赖外部系统 功能相对简单,不如 YARN 成熟
轻量级,资源消耗少 缺乏高级调度和队列管理功能
快速搭建测试环境 不支持与其他框架(如 Hadoop)共享资源
支持 HA 模式避免单点故障 社区支持相对 YARN 和 Kubernetes 较少
9. 典型应用场景
  • 开发测试环境:快速验证 Spark 应用。
  • 小规模生产集群:资源需求不复杂的场景。
  • 独立 Spark 集群:无需与其他计算框架集成的场景。

你可能感兴趣的:(spark)