Sedona JupyterLab Docker 镜像¶
Sedona 的 Docker 镜像可在 Sedona 官方 DockerHub 仓库 获取。
我们提供了一个集成 Python JupyterLab、Apache Zeppelin,以及 1 个 master 节点和 1 个 worker 节点的 Apache Sedona Docker 镜像。
使用方法¶
从 DockerHub 拉取镜像¶
格式:
docker pull apache/sedona:<sedona_version>
示例 1:拉取 Sedona master 分支的最新镜像
docker pull apache/sedona:latest
示例 2:拉取某个特定 Sedona 发布版本的镜像
docker pull apache/sedona:1.9.0
启动容器¶
格式:
docker run -d -e DRIVER_MEM=<driver_mem> -e EXECUTOR_MEM=<executor_mem> -p 8888:8888 -p 8080:8080 -p 8081:8081 -p 4040:4040 -p 8085:8085 apache/sedona:<sedona_version>
driver_mem 与 executor_mem 是可选项;如果未提供,容器将分别为 driver 和 executor 各分配 4GB 内存。-d(或 --detach)参数让容器以分离模式后台运行。
示例 1:
docker run -d -e DRIVER_MEM=6g -e EXECUTOR_MEM=8g -p 8888:8888 -p 8080:8080 -p 8081:8081 -p 4040:4040 -p 8085:8085 apache/sedona:latest
该命令会启动一个使用 6GB driver 内存与 8GB executor 内存的容器,并使用最新的 Sedona 镜像;容器以分离模式运行。
该命令会将容器的 8888、8080、8081、4040、8085 端口分别映射到宿主机的同名端口。
示例 2:
docker run -d -e -p 8888:8888 -p 8080:8080 -p 8081:8081 -p 4040:4040 -p 8085:8085 apache/sedona:1.9.0
该命令会启动一个 driver 与 executor 各使用 4GB 内存的容器,并使用 Sedona 1.9.0 镜像。
容器的端口映射与示例 1 相同。
示例 3:使用 Docker volume 持久化 /opt(Jupyter & Zeppelin 数据)
为确保 Jupyter 工作区、Zeppelin notebook 与配置不会丢失,可以将 /opt 挂载为 Docker volume:
docker run -d -e DRIVER_MEM=6g -e EXECUTOR_MEM=8g \
-p 8888:8888 -p 8080:8080 -p 8081:8081 -p 4040:4040 -p 8085:8085 \
-v sedona_opt:/opt \
apache/sedona:latest
-v sedona_opt:/opt会**创建(若不存在)并挂载名为sedona_opt的 Docker volume** 到容器内的/opt目录。- 即使容器被停止或删除,Jupyter 与 Zeppelin 的 notebook、配置和工作区也会持久保留。
开始编码¶
打开浏览器访问 http://localhost:8888/,即可在 Jupyter Notebook 中使用 Sedona 编码。也可以在浏览器中访问 http://localhost:8085/classic/ 来使用 Apache Zeppelin。
注意事项¶
- 该容器假设您的机器至少有 8GB 内存,并会占用所有 CPU 核心与 8GB 内存。1 个 worker 占用 4GB,Jupyter 程序占用剩余的 4GB。
- 容器中的 Sedona 以集群模式运行,同一时间只能运行 1 个 notebook。如需运行其他 notebook,请先关闭当前 notebook 的内核(操作方法)。
构建方法¶
克隆 Sedona GitHub 仓库。
针对某个 Sedona 发布版构建镜像¶
要求:docker(安装方法)
格式:
./docker/build.sh <spark_version> <sedona_version> <build_mode>
示例:
./docker/build.sh 3.4.1 1.9.0
build_mode 为可选项。如果未提供或值为 local,脚本会在本地构建镜像;否则会启动跨平台编译并直接将镜像推送到 DockerHub。
针对最新的 Sedona master 构建镜像¶
要求:docker(安装方法)、JDK <= 19、maven3
格式:
./docker/build.sh <spark_version> latest <build_mode>
示例:
./docker/build.sh 3.4.1 latest
build_mode 为可选项,含义与上文相同。
注意事项¶
该 Docker 镜像仅支持基于 Sedona 1.7.0+ 与 Spark 3.3+ 构建。
集群配置¶
软件¶
- OS:Ubuntu 22.02
- JDK:openjdk-19
- Python:3.10
- Spark 3.5.5
Web UI¶
- JupyterLab:http://localhost:8888/
- Spark master URL:spark://localhost:7077
- Spark 作业 UI:http://localhost:4040
- Spark master Web UI:http://localhost:8080/
- Spark worker Web UI:http://localhost:8081/
- Apache Zeppelin:http://localhost:8085/
容器中已捆绑一份 Zeppelin 教程 notebook,详情请参阅 Sedona-Zeppelin 教程。
如何推送到 DockerHub¶
格式:
docker login
./docker/build.sh <spark_version> <sedona_version> release
示例:
docker login
./docker/build.sh 3.4.1 1.9.0 release