当前位置: 首页 > news >正文

Docker部署Spark大数据组件

基本概念

Apache Spark 是一个专为大规模数据处理而设计的快速、通用的计算引擎。它最初由加州大学伯克利分校的 AMP 实验室开发,后成为 Apache 顶级项目。Spark 采用内存计算,可将作业中间结果缓存于内存中,减少磁盘读写操作,在数据挖掘和机器学习等需要迭代计算的场景中表现出色。

核心组件

Spark 的核心组件包括:

  • Spark Core :实现了 Spark 的基本功能,如 RDD(弹性分布式数据集)、任务调度、内存管理等,是 Spark 的基础。

  • Spark SQL :用于操作结构化数据的程序包,支持 SQL 查询,能够与多种数据源集成,如 Hive、Avro、Parquet 和 JSON 等。

  • Spark Streaming :提供了对实时数据进行流式计算的组件,可处理来自多种数据源的实时数据流,如 Kafka、Flume 和 TCP 套接字。

  • MLlib :是 Spark 提供的机器学习功能的程序库,包含常见的机器学习算法,如分类、回归、聚类和推荐系统等。

  • GraphX :用于图计算的 API,适用于大规模图数据计算,支持常见的图算法,如 PageRank、连接组件和最短路径等。

安装部署

需要说明的是:Spark的image有官方版本和第三方版本(vmware的bitnami/spark等);官方版本在不使用Kubernetes的情况下,使用Docker无法以服务启动,只能进行交互式访问。

官方版启动命令:

ENTRYPOINT ["/opt/entrypoint.sh"]

bitnami/spark镜像启动命令:

ENTRYPOINT ["/opt/bitnami/scripts/spark/entrypoint.sh"]

官方镜像使用

拉取镜像:docker pull spark

链接:https://hub.docker.com/r/spark

Interactive Scala Shell

docker run -it spark /opt/spark/bin/spark-shell

Interactive Python Shell

docker run -it spark:python3 /opt/spark/bin/pyspark

Interactive R Shell

docker run -it spark:r /opt/spark/bin/sparkR

运行如下命令调用,返回:Long = 1000000000      

>>> spark.range(1000 * 1000 * 1000).count()

退出scala:

scala> :quit

bitnami/spark镜像使用

拉取镜像:docker pull bitnami/spark:3.5.5

链接:https://hub.docker.com/r/bitnami/spark 

环境准备
useradd spark
usermod -a -G docker spark
su - spark
mkdir -p ~/spark-cluster/{conf,data,ivy}
chmod 777 ~/spark-cluster/{conf,data,ivy}

注:这里需要完全放开权限,否则spark启动失败,镜像中使用了root组的rpmer用户拷贝文件到上述目录中。

定义docker-compose yaml规格文件
cd spark-cluster/cat >docker-compose.yaml <<EOF
services: master:image: bitnami/spark:3.5.5container_name: spark-masterports:- "8080:8080"- "7077:7077"environment:- SPARK_MODE=master- SPARK_MASTER_HOST=spark-master- SPARK_RPC_AUTH_ENABLED=novolumes:- ./conf:/opt/bitnami/spark/conf- ./data:/data- ./ivy:/opt/bitnami/spark/ivynetworks:- zookeeper-networker1:image: bitnami/spark:3.5.5container_name: spark-worker1environment:- SPARK_MODE=worker- SPARK_MASTER_URL=spark://spark-master:7077- SPARK_WORKERMEMORY=2G- SPARK_WORKER_CORES=1- SPARK_RPC_AUTH_ENABLED=novolumes:- ./conf:/opt/bitnami/spark/conf- ./data:/data- ./ivy:/opt/bitnami/spark/ivydepends_on:- masternetworks:- zookeeper-networker2:image: bitnami/spark:3.5.5container_name: spark-worker2environment:- SPARK_MODE=worker- SPARK_MASTER_URL=spark://spark-master:7077- SPARK_WORKERMEMORY=2G- SPARK_WORKER_CORES=1- SPARK_RPC_AUTH_ENABLED=novolumes:- ./conf:/opt/bitnami/spark/conf- ./data:/data- ./ivy:/opt/bitnami/spark/ivydepends_on:- masternetworks:- zookeeper-netnetworks:zookeeper-net:external: true
EOF

注:我这里使用了已有的docker network:zookeeper-net,如果没有需要创建,或者修改docker-compose为已有network。

启动spark
docker-compose up -d

验证 Spark 运行状态

访问 Spark Master 的 Web UI,查看集群状态。默认情况下,Master 的 Web UI 运行在 8080 端口,可以通过以下命令查看:

curl http://localhost:8080

也可以直接浏览器访问:

日志查看

docker-compose logs master worker1 worker2

提交 Spark 作业

docker exec -it spark-master /bin/bash
spark-submit --master spark://spark-master:7077 \--class org.apache.spark.examples.SparkPi \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.5.5.jar 10

报错:
Exception in thread "main" java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local at org.apache.ivy.util.Checks.checkAbsolute(Checks.java:48)

解决:

1、echo "spark.jars.ivy /opt/bitnami/spark/ivy" >> conf/spark-defaults.conf

2、重启spark

docker-compose down -v

docker-compose up -d

3、再次提交作业,成功完成。

http://www.xdnf.cn/news/666523.html

相关文章:

  • 【Java项目实战】智能截图工具V2.0:集成Tesseract OCR实现中英文识别功能完整开发教程
  • 【Qt开发】多元素控件
  • JavaScript性能优化全景指南
  • QT 框架学习笔记
  • Elasticsearch性能优化全解析
  • uni-app(6):Vue3语法基础下
  • Nginx 性能优化全解析:从进程到安全的深度实践
  • 【JavaScript 性能优化方法】
  • 【前端】【Vue3】vue3性能优化总结
  • MySQL 窗口函数深度解析:语法、应用场景与性能优化
  • day 23 机器学习管道(pipeline)
  • 项目启动以及Vue初识
  • Python整合Milvus向量数据库案例实战
  • 通过HIVE SQL获取每个用户的最大连续登录时常
  • 【Opencv+Yolo】Day2_图像处理
  • Vim 常用命令
  • 《数据结构初阶》【番外篇:快速排序的前世今生】
  • MySQL的主从复制
  • MYSQL 学习笔记
  • Django ToDoWeb 服务
  • 4.8.5 利用Spark SQL统计网站每月访问量
  • sharding jdbc的使用,如何在Spring中实现数据库的主从分离、分库分表等功能
  • Java· swing 小demo
  • EasyDarwin的配置与使用
  • MMAction2重要的几个配置参数
  • 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 C: Count Inversions
  • C++面试题:虚函数表(vtable)的底层实现机制与应用解析
  • 守护手部稳定,手抖健康护理全攻略
  • 【关于C++跨平台开发的挑战】
  • 【C++】内存管理,深入解析new、delete