docker单点部署spark

参考我之前的hadoop:

docker单点安装Hadoop-CSDN博客文章浏览阅读816次,点赞8次,收藏10次。关于使用docker安装单点hadoop,记录了部署的过程和遇到的bug,可以极大的避免大家踩坑,而且过程纯享版 https://blog.csdn.net/qq_73440769/article/details/148678985?spm=1001.2014.3001.5501

1、创建挂载的目录:

mkdir -p /home/spark/data
mkdir -p /home/spark/jars
mkdir -p /home/spark/logs
mkdir -p /home/spark/conf

2、拉取spark3.5.1镜像

docker pull bitnami/spark:3.5.1

3、创建了自定义网络

 如果你创建hadoop的时候已经创建就不需要重复创建了

docker network create hadoop-spark-network

4、启动docker

注意你自己hadoop配置文件挂载的路径,修改 Spark Worker 容器 里面的配置/home/user/hadoop/conf

启动 Spark Master 容器

docker run -d \
  --name spark-master \
  --hostname spark-master \
  --network hadoop-spark-network \
  -p 7077:7077 \
  -p 6060:8080 \
  -v /home/spark/data:/opt/spark/data \
  -v /home/spark/jars:/opt/spark/jars \
  -v /home/spark/logs:/opt/spark/logs \
  -e SPARK_MODE=master \
  bitnami/spark:3.5.1

将Spark Master Web UI 的 8080 端口映射到主机的 6060 端口 

启动 Spark Worker 容器 

将配置从 Hadoop 容器复制到宿主机:

docker cp hadoop:/usr/local/hadoop/etc/hadoop /home/spark/hadoop-conf

启动: 

docker run -it --rm \
  --name spark-worker \
  --hostname spark-worker \
  --network hadoop-spark-network \
  -p 4040:4040 \
  -v /home/spark/data:/opt/spark/data \
  -v /home/spark/jars:/opt/spark/jars \
  -v /home/spark/logs:/opt/spark/logs \
  -v /home/spark/hadoop-conf:/opt/hadoop/etc/hadoop \
  -e SPARK_MODE=worker \
  -e SPARK_MASTER_HOST=spark-master \
  -e HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop \
  bitnami/spark:3.5.1

测试:

http://<your-host-ip>:6060

 

发现没问题,ctrl+c结束,重新启动worker容器 

docker run -d \
  --name spark-worker \
  --hostname spark-worker \
  --network hadoop-spark-network \
  -p 4040:4040 \
  -v /home/spark/data:/opt/spark/data \
  -v /home/spark/jars:/opt/spark/jars \
  -v /home/spark/logs:/opt/spark/logs \
  -v /home/spark/hadoop-conf:/opt/hadoop/etc/hadoop \
  -e SPARK_MODE=worker \
  -e SPARK_MASTER_HOST=spark-master \
  -e HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop \
  bitnami/spark:3.5.1

5、把hadoop加入共同网络

docker ps --format "table {{.Names}}\t{{.Networks}}"
docker network connect hadoop-spark-network hadoop

6、hadoop下创建测试文件

docker exec -it hadoop /bin/bash
mkdir -p /opt/spark-test
cd /opt
ls

赋予权限:

chown -R hadoop:hadoop /opt/spark-test

切换到 hadoop 用户并创建文件:

su - hadoop
cd /opt/spark-test
echo "Hello Spark" > test.txt
echo "This is a test file for Spark on HDFS" >> test.txt

上传文件至 HDFS:

如果之前不存在那个文件夹:

hadoop fs -put /opt/spark-test/test.txt /spark-test/

如果存在执行上面就会有提示:

然后执行下面指令即可:

hadoop fs -rm /spark-test/test.txt
hadoop fs -put /opt/spark-test/test.txt /spark-test/

验证:

hadoop fs -ls /spark-test

7、测试 Spark Shell 和 HDFS 访问

进入 Worker 容器测试 Spark Shell 和 HDFS 访问 

docker exec -it spark-worker /bin/bash

spark-shell --master spark://spark-master:7077

测试 Spark Shell 中的 HDFS 访问

val text = sc.textFile("hdfs://hadoop:9000/spark-test/test.txt")
text.count()

这个可能是没有可用的资源,也可能是别的原因,可以参考第七点

这边随便建一个文件来测试,不测在hadoop的:

成功输出。

7、结束任务

可能会遇到你不正常结束命令行,会导致你的资源都在上一次的任务中,在你下一次导致即使重新开始spark任务结果发现一直在等待,你看那个spark网站就会看到新任务没有被分配任何资源,核数是0,因为你之前的任务还占用着资源,所以使用完建议关闭一下。

// 停止 SparkContext
sc.stop()

// 停止 SparkSession
spark.stop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乄bluefox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值