
inseefrlab/spark-hadoop本镜像为集成 Java 11 运行时环境、Apache Spark 和 Apache Hadoop 的一站式大数据处理 Docker 镜像。旨在提供开箱即用的大数据开发、测试与运行环境,消除手动配置 Spark 和 Hadoop 集群的复杂性,支持基于 Java 11 的 Spark 应用开发、Hadoop 分布式文件系统(HDFS)操作及批处理/流处理任务执行。
bashdocker pull [镜像仓库地址]/java11-spark-hadoop:latest # 替换为实际镜像仓库地址
若需自定义版本,可基于 Dockerfile 构建:
bashgit clone [镜像源码仓库] cd java11-spark-hadoop docker build -t java11-spark-hadoop:custom .
bashdocker run -it --name spark-hadoop-local \ -p 4040:4040 # Spark 应用 UI 端口 \ -p 8080:8080 # Spark Master UI 端口 \ -p 50070:50070 # HDFS NameNode UI 端口 \ -v /host/data:/container/data # 挂载宿主机数据目录 \ java11-spark-hadoop:latest /bin/bash
进入容器后,执行以下命令验证组件可用性:
bash# 验证 Java 版本 java -version # 输出 Java 11 版本信息 # 验证 Spark spark-shell # 启动 Spark Shell(Scala),进入交互式编程环境 # 验证 HDFS hdfs dfs -ls / # 列出 HDFS 根目录(默认空)
适用于启动包含 Spark Master/Worker 及 HDFS NameNode/DataNode 的小规模集群:
yamlversion: '3.8' services: # HDFS NameNode namenode: image: java11-spark-hadoop:latest container_name: hdfs-namenode ports: - "50070:50070" # NameNode UI - "9000:9000" # HDFS 服务端口 environment: - HDFS_ROLE=namenode - HDFS_NAMENODE_HOST=namenode volumes: - hdfs-namenode-data:/hadoop/dfs/name networks: - bigdata-net # HDFS DataNode datanode: image: java11-spark-hadoop:latest container_name: hdfs-datanode depends_on: - namenode environment: - HDFS_ROLE=datanode - HDFS_NAMENODE_HOST=namenode volumes: - hdfs-datanode-data:/hadoop/dfs/data networks: - bigdata-net # Spark Master spark-master: image: java11-spark-hadoop:latest container_name: spark-master ports: - "8080:8080" # Master UI - "7077:7077" # Master 服务端口 environment: - SPARK_ROLE=master - SPARK_MASTER_HOST=spark-master networks: - bigdata-net # Spark Worker spark-worker: image: java11-spark-hadoop:latest container_name: spark-worker depends_on: - spark-master environment: - SPARK_ROLE=worker - SPARK_MASTER_URL=spark://spark-master:7077 - SPARK_WORKER_CORES=2 # 分配 CPU 核心数 - SPARK_WORKER_MEMORY=2g # 分配内存 networks: - bigdata-net volumes: hdfs-namenode-data: hdfs-datanode-data: networks: bigdata-net: driver: bridge
bashdocker-compose up -d # 后台启动所有服务 docker-compose logs -f # 查看集群启动日志
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
JAVA_HOME | Java 11 安装路径 | /usr/lib/jvm/java-11-openjdk-amd64 |
SPARK_VERSION | Apache Spark 版本 | 3.3.4 |
HADOOP_VERSION | Apache Hadoop 版本 | 3.3.6 |
SPARK_ROLE | Spark 节点角色(master/worker) | local(本地模式) |
SPARK_MASTER_HOST | Spark Master 主机地址 | localhost |
SPARK_WORKER_CORES | Spark Worker 可用 CPU 核心数 | 1 |
SPARK_WORKER_MEMORY | Spark Worker 可用内存 | 1g |
HDFS_ROLE | HDFS 节点角色(namenode/datanode) | standalone(单节点) |
HDFS_NAMENODE_HOST | HDFS NameNode 主机地址 | localhost |
通过挂载宿主机配置文件覆盖默认配置:
bashdocker run -it \ -v /host/custom/spark-defaults.conf:/opt/spark/conf/spark-defaults.conf \ # Spark 配置 -v /host/custom/core-site.xml:/opt/hadoop/etc/hadoop/core-site.xml \ # Hadoop 核心配置 java11-spark-hadoop:latest
为避免容器重启导致 HDFS 数据丢失,需挂载数据卷:
bash# 宿主机创建 HDFS 数据目录 mkdir -p /host/hdfs/namenode /host/hdfs/datanode # 启动容器时挂载 docker run -it \ -v /host/hdfs/namenode:/hadoop/dfs/name \ # NameNode 元数据 -v /host/hdfs/datanode:/hadoop/dfs/data \ # DataNode 数据 java11-spark-hadoop:latest
若宿主机已占用 8080(Spark UI)、50070(HDFS UI)等端口,启动时需修改映射端口:
bashdocker run -it -p 8081:8080 -p 50071:50070 java11-spark-hadoop:latest
Spark/Hadoop 运行时需足够内存,建议宿主机内存 ≥ 4GB,或通过 SPARK_WORKER_MEMORY 限制资源占用。
首次启动 NameNode 需格式化文件系统:
bashdocker exec -it hdfs-namenode hdfs namenode -format






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务