使用 Docker 部署 Apache Spark 集群教程

简介

Apache Spark 是一个强大的统一分析引擎,用于大规模数据处理。本文将详细介绍如何使用 Docker 和 Docker Compose 快速部署一个包含一个 Master 节点和两个 Worker 节点的 Spark 集群。这种方法不仅简化了集群的搭建过程,还提供了资源隔离、易于扩展等优势。

前置条件

在开始之前,请确保你的环境中已经准备好了以下组件:

  • 安装并运行 Docker Engine。
  • 安装 Docker Compose,用于定义和运行多容器应用。
  • 主机能够连接到 Docker Hub 以下载所需的镜像。

Docker Compose 文件配置

创建 docker-compose.yml

首先,创建一个名为 docker-compose.yml 的文件,并添加如下内容:

yaml 复制代码
version: '3'
services:
  master:
    image: bitnami/spark:3.5.4
    container_name: master
    user: root
    environment:
      - SPARK_MODE=master
      - SPARK_MASTER_WEBUI_PORT=8080
      - SPARK_MASTER_PORT=7077
    ports:
      - '8080:8080'
      - '7077:7077'
    volumes:
      - ./python:/python
  worker1:
    image: bitnami/spark:3.5.4
    container_name: worker1
    user: root
    environment:
      - SPARK_MODE=worker
      - SPARK_MASTER_URL=spark://master:7077
      - SPARK_WORKER_MEMORY=1G
      - SPARK_WORKER_CORES=1
    depends_on:
      - master
  worker2:
    image: bitnami/spark:3.5.4
    container_name: worker2
    user: root
    environment:
      - SPARK_MODE=worker
      - SPARK_MASTER_URL=spark://master:7077
      - SPARK_WORKER_MEMORY=1G
      - SPARK_WORKER_CORES=1
    depends_on:
      - master
networks:
  default:
    driver: bridge

启动 Spark 集群

进入保存 docker-compose.yml 文件的目录,执行以下命令启动集群:

bash 复制代码
docker compose up -d

这将构建并以后台模式启动所有容器。

验证集群状态

成功启动后,您可以通过浏览器访问 {您的虚拟机IP}:8080 查看 Spark Master 的 Web UI,确认 worker1 和 worker2 是否已成功连接。

运行 Spark 作业

为了测试集群功能,可以提交一个简单的 Python 脚本 pi.py 计算圆周率 Pi 的近似值。脚本内容如下:

python 复制代码
from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession.builder.appName("Pi Calculator").getOrCreate()
    numSamples = 100000000
    count = spark.sparkContext.parallelize(range(1, numSamples)).count()
    print(f"Pi is roughly {4.0 * count / numSamples}")
    spark.stop()

将此脚本放置于 ./python 目录下,并通过以下命令提交作业:

bash 复制代码
docker-compose exec master /opt/bitnami/spark/bin/spark-submit --master spark://master:7077 /python/pi.py

结束语

通过上述步骤,您已经成功地使用 Docker 部署了一个包含一个 Master 节点和两个 Worker 节点的 Spark 集群。这种部署方式不仅快速便捷,而且便于根据需求调整配置(如增加 Worker 节点数量或调整资源配置)。希望这篇教程能帮助您快速上手 Spark 集群的 Docker 部署!

相关推荐
叼烟扛炮25 分钟前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
David猪大卫7 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Android系统攻城狮7 小时前
Linux FFmpeg深度解析之avcodec_align_dimensions调用流程与实战(二十九)
服务器·linux音视频·音视频进阶·ffmpeg音视频
飞飞传输8 小时前
飞驰云联文件交换建设方法论:从单点传输到持续治理
大数据·运维·安全
叼烟扛炮8 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
测试界的小码农9 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
布裘10 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
zhikouai11 小时前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
huainingning11 小时前
锐捷10.X路由器版本升级不生效问题排查
运维·网络·智能路由器