最近考虑要一个运行在单机上的spark standalone cluster
(使用docker-compose编排到多个容器)分散到多个物理机上,考虑到机器不够,准备还是用pseudo cluster部署,
部署
大概3台物理机,考虑到后续扩展,也可以后续增加更多物理节点
- 192.168.6.155
- 192.168.6.156
- 192.168.6.157
IP | 用途 |
---|---|
6.155 | zookeeper集群/zoo1 spark cluster/master1+worker1+worker4 |
6.156 | zookeeper集群/zoo2 spark cluster/master2+worker2+worker5 |
6.157 | zookeeper集群/zoo3 spark cluster/master3+worker3+worker6 |
其他 | spark cluster/+worker8+worker9+worker10 |
1、使用docker run
启动相应服务,镜像使用apache/spark:3.5.4-scala2.12-java11-python3-ubuntu
2、由于注册到worker跨机器了,所以采用--network host
直接使用宿主机网络,那么这样就需要躲避端口重复
3、由于可能不基于HDFS,那么需要考虑采用其他共享存储,比如Mounting S3 Bucket as a Filesystem in Linux
or NFS client
4、将必要存储挂载到宿主机,便于持久化
5、采用一个共享的maven repository用于第三方依赖管理,这个目录挂载给每个spark容器,执行一次mvn dependency:get -Dartifact=org.apache.kafka:kafka-clients:3.8.1
即可共享到每个容器中
docker run \
-d \
--restart=always \
--network host \
--name=zknavigator \
--hostname=zknavigator \
-e HTTP_PORT=39000 \
elkozmon/zoonavigator:latest
ref
- 标签 spark