Apache Spark 集群部署与使用指南

Apache Spark 集群部署与使用指南

本文档介绍如何使用 Docker 部署 Apache Spark 集群,并通过 PySpark 进行分布式数据处理。

目录

环境准备

确保您的系统已安装以下软件:

  • Docker
  • Docker Compose

集群部署

1. Docker Compose 配置

创建 docker-compose.yml 文件,配置 Spark 集群:

yaml 复制代码
services:
  spark-master:
    image: apache/spark:3.5.0
    container_name: spark-master
    ports:
      - "8080:8080"  # Spark Master Web UI
      - "7077:7077"  # Spark Master 端口
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.master.Master
    environment:
      - SPARK_MASTER_HOST=0.0.0.0
      - SPARK_MASTER_PORT=7077
      - SPARK_MASTER_WEBUI_PORT=8080
    volumes:
      - ./data:/opt/spark-data
    networks:
      - spark-network

  spark-worker-1:
    image: apache/spark:3.5.0
    container_name: spark-worker-1
    ports:
      - "8081:8081"  # Worker 1 Web UI
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077
    environment:
      - SPARK_WORKER_CORES=2
      - SPARK_WORKER_MEMORY=2g
      - SPARK_WORKER_WEBUI_PORT=8081
    depends_on:
      - spark-master
    volumes:
      - ./data:/opt/spark-data
    networks:
      - spark-network

  spark-worker-2:
    image: apache/spark:3.5.0
    container_name: spark-worker-2
    ports:
      - "8082:8081"  # Worker 2 Web UI
    command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077
    environment:
      - SPARK_WORKER_CORES=2
      - SPARK_WORKER_MEMORY=2g
      - SPARK_WORKER_WEBUI_PORT=8081
    depends_on:
      - spark-master
    volumes:
      - ./data:/opt/spark-data
    networks:
      - spark-network

networks:
  spark-network:
    driver: bridge

volumes:
  spark-data:

2. 启动集群

bash 复制代码
# 启动 Spark 集群
docker-compose up -d

# 检查容器状态
docker-compose ps

连接集群

1. 进入 Master 容器

bash 复制代码
docker exec -it spark-master bash

2. 启动 PySpark Shell

在容器内执行以下命令连接到集群:

bash 复制代码
/opt/spark/bin/pyspark --master spark://spark-master:7077

数据处理示例

1. 验证集群连接

python 复制代码
# 验证 SparkContext 是否正确连接到集群
print("Spark version:", sc.version)
print("Master:", sc.master)
print("应用ID:", sc.applicationId)

2. 创建和处理 RDD

python 复制代码
# 创建一个简单的 RDD 进行计算
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
rdd = sc.parallelize(data)

# 执行分布式计算
result = rdd.map(lambda x: x * 2).filter(lambda x: x > 5).collect()
print("计算结果:", result)

预期输出:

复制代码
计算结果: [6, 8, 10, 12, 14, 16, 18, 20]

Web UI 访问

部署完成后,您可以通过以下 URL 访问 Spark Web UI:

通过 Web UI 可以监控:

  • 集群状态和资源使用情况
  • 正在运行的应用程序
  • 作业执行历史
  • 执行器状态

总结

通过本指南,您已经学会了:

  1. 使用 Docker Compose 部署 Spark 集群
  2. 连接到集群并使用 PySpark
  3. 执行基本的分布式数据处理任务
  4. 通过 Web UI 监控集群状态

这为进一步的大数据处理和分析奠定了基础。

相关推荐
xushichang123_19 分钟前
企业想统一接入 Claude、GPT、DeepSeek、Qwen 等模型,应该选什么云上 AI 平台架构?
大数据
赟爸2 小时前
直播切片素材杂乱不好复用,易元AI要怎么处理
大数据·人工智能·python
yunlaodacom2 小时前
阿里云国际站注册:性能损耗 < 1%!基于 eBPF 的服务器异常预测实战与调优指南
大数据·服务器·阿里云
大大大大晴天2 小时前
从 Kafka 到报表:Flink、CDC 与 StarRocks 的实时入仓链路
大数据
qq_454245032 小时前
Agent数据价值分类存储原则
大数据·人工智能·分类
画中有画4 小时前
Kappa 架构在大数据实时处理系统中的应用
大数据·架构
yingyuecom5 小时前
Hi,导演:AI视频创作正在从“模型调用”走向“生产工作流”
大数据·人工智能
阿标在干嘛6 小时前
从数据碎片到决策引擎:政策快报背后的政策大数据架构逻辑
大数据·架构
青山科技分享6 小时前
跨境电商如何做GEO,让商品被AI搜索推荐?
大数据·人工智能·跨境电商
飘羽7156 小时前
王画艺术展《原质异景》登陆深圳 重构当代都市生存图景
大数据