簡介
Apache Spark 是一個強大的統一分析引擎,用于大規模數據處理。本文將詳細介紹如何使用 Docker 和 Docker Compose 快速部署一個包含一個 Master 節點和兩個 Worker 節點的 Spark 集群。這種方法不僅簡化了集群的搭建過程,還提供了資源隔離、易于擴展等優勢。
前置條件
在開始之前,請確保你的環境中已經準備好了以下組件:
- 安裝并運行 Docker Engine。
- 安裝 Docker Compose,用于定義和運行多容器應用。
- 主機能夠連接到 Docker Hub 以下載所需的鏡像。
Docker Compose 文件配置
創建 docker-compose.yml
首先,創建一個名為 docker-compose.yml
的文件,并添加如下內容:
version: '3'
services:master:image: bitnami/spark:3.5.4container_name: masteruser: rootenvironment:- SPARK_MODE=master- SPARK_MASTER_WEBUI_PORT=8080- SPARK_MASTER_PORT=7077ports:- '8080:8080'- '7077:7077'volumes:- ./python:/pythonworker1:image: bitnami/spark:3.5.4container_name: worker1user: rootenvironment:- SPARK_MODE=worker- SPARK_MASTER_URL=spark://master:7077- SPARK_WORKER_MEMORY=1G- SPARK_WORKER_CORES=1depends_on:- masterworker2:image: bitnami/spark:3.5.4container_name: worker2user: rootenvironment:- SPARK_MODE=worker- SPARK_MASTER_URL=spark://master:7077- SPARK_WORKER_MEMORY=1G- SPARK_WORKER_CORES=1depends_on:- master
networks:default:driver: bridge
啟動 Spark 集群
進入保存 docker-compose.yml
文件的目錄,執行以下命令啟動集群:
docker compose up -d
這將構建并以后臺模式啟動所有容器。
驗證集群狀態
成功啟動后,您可以通過瀏覽器訪問 {您的虛擬機IP}:8080
查看 Spark Master 的 Web UI,確認 worker1
和 worker2
是否已成功連接。
運行 Spark 作業
為了測試集群功能,可以提交一個簡單的 Python 腳本 pi.py
計算圓周率 Pi 的近似值。腳本內容如下:
from pyspark.sql import SparkSessionif __name__ == "__main__":spark = SparkSession.builder.appName("Pi Calculator").getOrCreate()numSamples = 100000000count = spark.sparkContext.parallelize(range(1, numSamples)).count()print(f"Pi is roughly {4.0 * count / numSamples}")spark.stop()
將此腳本放置于 ./python
目錄下,并通過以下命令提交作業:
docker-compose exec master /opt/bitnami/spark/bin/spark-submit --master spark://master:7077 /python/pi.py
結束語
通過上述步驟,您已經成功地使用 Docker 部署了一個包含一個 Master 節點和兩個 Worker 節點的 Spark 集群。這種部署方式不僅快速便捷,而且便于根據需求調整配置(如增加 Worker 節點數量或調整資源配置)。希望這篇教程能幫助您快速上手 Spark 集群的 Docker 部署!