微软行星云计算Planetary Computer——定了用python作为主要语言,告别GEE的JavaScript痛苦!
在行星计算机上计算
行星计算机的核心组件是数据集和用于查询它们的 API。本文档概述了您可以对由行星计算机托管的数据进行计算的各种方法。
无论您如何对数据进行计算,为确保最高效率,您都应将计算位置尽可能靠近数据。行星计算机数据目录托管在 Azure 的西欧区域,因此您的计算也应该在那里。
使用我们的 JupyterHub
该行星计算机中心是JupyterHub在西欧地区Azure的部署。这是在行星计算机上开始计算的最简单方法。
笔记
您需要申请访问权限才能使用行星计算机中心。
一旦获得批准,您就可以使用您的凭据登录 JupyterHub。您将获得一个计算环境,其中包括来自Pangeo Docker 镜像之一的标准科学和地理空间包。
对于可扩展的计算,JupyterHub 还配置了Dask Gateway。创建 Dask 集群:
>>> from dask_gateway import GatewayCluster
>>> cluster = GatewayCluster() # Creates the Dask Scheduler. Might take a minute.
>>> client = cluster.get_client()
>>> cluster.adapt(minimum=1, maximum=100)
>>> cluster
GatewayCluster<prod.fbfed27704fc4d1da027dad20471993b, status=running>
通过此设置,所有计算都在 Azure 上进行,无论是在单个节点上还是在具有 Dask 的集群上。
有关Dask的介绍,请参阅使用 Dask进行缩放。此设置由Pangeo 社区首创。该Pangeo云机制的文档提供了有关如何使用启用DASK-JupyterHubs更多的背景。
使用 VS Code 连接到远程 Jupyter 内核
有关如何使用 Visual Studio Code 作为行星计算机计算的用户界面,请参阅使用 VS Code。
使用 GitHub 代码空间
请参阅使用 GitHub 代码空间了解如何使用GitHub 代码空间作为用户界面和使用来自 Planetary Computer 目录中的数据的执行环境。
使用我们的 Dask 网关
在此设置中,您仅使用行星计算机的可扩展计算。您没有登录 JupyterHub。相反,您的本地机器驱动计算。我们向重视并习惯于管理本地开发环境的用户推荐这种方法。此设置需要您多加注意:您需要确保本地环境中的库版本与 Azure 中运行的版本兼容。虽然不是必需的,但我们建议使用在Microsoft/planetary-computer-containers 上发布的容器映像。此处的示例将使用mcr.microsoft.com/planetary-computer/python
图像创建本地 jupyterlab 会话。
从 JupyterHub 请求令牌
访问Hub | Planetary Computer以生成令牌。您需要进行身份验证才能生成令牌。
在<JUPYTERHUB_API_TOKEN>
下面看到的任何地方替换该令牌。
连接到网关
与之前类似,我们将使用dask_gateway
连接。只有现在我们需要明确提供 URL。您可以在代码中或作为环境变量指定它们。
下一个片段在localhost:8888
使用mcr.microsoft.com/planetary-computer/python
容器时启动 jupyterlab 。它还将当前工作目录挂载为一个卷,以便您可以访问本地文件。
$ export JUPYTERHUB_API_TOKEN=<JUPYTERHUB_API_TOKEN> from above
$ docker run -it --rm \
-p 8888:8888 \
-e JUPYTERHUB_API_TOKEN=$JUPYTERHUB_API_TOKEN \
-e DASK_GATEWAY__AUTH__TYPE="jupyterhub" \
-e DASK_GATEWAY__CLUSTER__OPTIONS__IMAGE="mcr.microsoft.com/planetary-computer/python:latest" \
-e DASK_GATEWAY__ADDRESS="https://pccompute.westeurope.cloudapp.azure.com/compute/services/dask-gateway" \
-e DASK_GATEWAY__PROXY_ADDRESS="gateway://pccompute-dask.westeurope.cloudapp.azure.com:80" \
mcr.microsoft.com/planetary-computer/python:latest \
jupyter lab --no-browser --ip="0.0.0.0"
这将打印出一个可以用来访问本地 jupyterlab 的 URL。从那里,你可以
>>> import dask_gateway
>>> gateway = dask_gateway.Gateway()
>>> cluster = gateway.new_cluster()
>>> client = cluster.get_client()
从这里开始,使用 Dask 的计算将在集群上进行。当你得到.compute()
一个结果并将它带回本地时,它会来到你本地机器上运行的 Python 进程。理想情况下,本地返回的结果足够小,Azure 和本地计算机之间的较低带宽不会成为瓶颈。
使用您自己的计算
前两种方法依赖于行星计算机提供的计算。如果您拥有自己的 Azure 资源,则可以使用这些资源访问行星计算机的数据集。
也就是说,请确保您的资源位于西欧Azure 区域。将计算与数据放在同一区域是进行计算的最有效方式。
使用 Azure 机器学习
如果你有一个现有的Azure 机器学习工作区,你可以使用它来访问由行星计算机托管的数据和 API。在这里,我们展示了如何从 Azure 机器学习工作室访问行星计算机的元数据 API。
在这种情况下,我们使用 Azure Machine Learning Studio 连接到在 Azure 中运行的虚拟机。该虚拟机具有到行星计算机数据和元数据 API 的高带宽连接。
使用 Dask 云提供商
需要专门的软件环境或大量计算的用户可以使用自己的资源来访问行星计算机的数据和元数据 API。
在此示例中,我们使用仅使用 Azure 订阅来创建 Dask 集群。按照https://cloudprovider.dask.org/en/latest/azure.html 上的设置说明进行操作后,您可以创建集群:Dask Cloud Provider
>>> from dask_cloudprovider.azure import AzureVMCluster
>>> cluster = AzureVMCluster(resource_group="<resource group>",
... vnet="<vnet>",
... security_group="<security group>",
... n_workers=1)
Creating scheduler instance
Assigned public IP
Network interface ready
Creating VM
Created VM dask-5648cc8b-scheduler
Waiting for scheduler to run
Scheduler is running
Creating worker instance
Network interface ready
Creating VM
Created VM dask-5648cc8b-worker-e1ebfc0e
并连接到它
>>> from dask.distributed import Client
>>> client = Client(cluster)
与之前的设置一样,Dask 调度程序和工作程序在数据附近的 Azure 中运行。本地客户端可能在 Azure 之外。
文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31988139/article/details/120854662
- 点赞
- 收藏
- 关注作者
评论(0)