Conda管理

概览

Anaconda 集群管理的主要功能之一是跨集群远程部署和管理 Anaconda 环境。

前置acluster核心conda命令将在所有集群节点上执行这些命令。

例如,要查看所有集群节点上的 conda 环境:

$ acluster conda info -e
All nodes (x3) response:
# conda environments:
#
root                  *  /opt/anaconda

在所有集群节点上安装 numpy:

$ acluster conda install numpy
Installing (u'numpy',) on cluster "demo_cluster"
Node "ip-10-234-8-208.ec2.internal":
    Successful actions: 1/1
Node "ip-10-170-59-28.ec2.internal":
    Successful actions: 1/1
Node "ip-10-232-42-58.ec2.internal":
    Successful actions: 1/1

有关所有可用命令的简要概述,请查看 .Anaconda for cluster management Cheat Sheet

从频道安装包

您可以通过添加选项从Anaconda Cloud或 Anaconda Repository 安装安装软件包--channel/-c。例如,要从anaconda-cluster 频道安装 apache-libcloud 包:

$ acluster conda install -c https://conda.anaconda.org/anaconda-cluster apache-libcloud
Installing (u'apache-libcloud',) on cluster "demo_cluster"
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1
$ acluster conda list | grep apache-libcloud
- 'apache-libcloud: 0.16.0 (py27_0)'

远程 conda 命令列表

Anaconda 中提供了以下 conda 命令用于集群管理:

  • acluster conda install – 安装包
  • acluster conda update – 更新包
  • acluster conda remove – 移除包裹
  • acluster conda list – 列出包
  • acluster conda create – 创建 conda 环境
  • acluster conda info – 显示有关当前 conda 安装的信息
  • acluster conda push – 将 conda 环境推送到集群

有关 conda 的更多信息,请参阅 conda 文档

示例远程 conda 命令

安装 conda 包

任何 conda 包都可以安装在 Anaconda 管理的集群上以进行集群管理:

$ acluster conda install numpy

Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1

使用以下list命令验证软件包是否已安装:

$ acluster conda list

All nodes (x2) response:
...
- 'numpy: 1.9.2 (py27_0)'
...

您还可以使用单个命令安装多个 conda 包:

$ acluster conda install scipy pandas scikit-learn
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 3/3
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 3/3

$ acluster conda list
All nodes (x2) response:
...
- 'pandas: 0.16.1 (np19py27_0)'
...
- 'scikit-learn: 0.16.1 (np19py27_0)'
- 'scipy: 0.15.1 (np19py27_0)'
...

注意:建议您一次安装所有需要的软件包。一次安装一个包会导致依赖冲突。

列出 conda 包

在集群上运行的一个有用的 conda 命令是列出节点上可用的包(默认情况下,所有节点都应该具有相同的包):

$ acluster conda list

All nodes (x2) response:
- 'libsodium: 0.4.5 (0)'
- 'sqlite: 3.8.4.1 (1)'
- 'conda-env: 2.1.4 (py27_0)'
- 'python: 2.7.9 (3)'
...

更新 conda 包

您还可以指定要安装或更新的 conda 软件包版本:

$ acluster conda install pandas==0.13
Installing (u'pandas==0.13',) on cluster "demo_cluster"
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1
$ acluster conda list | grep pandas
- 'pandas: 0.13.0 (np18py27_0)'

$ acluster conda update pandas
Updating (u'pandas',) on cluster "demo_cluster"
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1
$ acluster conda list | grep pandas
- 'pandas: 0.16.1 (np19py27_0)'

删除 conda 包

您可以跨集群删除 conda 包:

$ acluster conda remove pandas
Removing (u'pandas',) on cluster "demo_cluster"
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1

$ acluster conda list | grep pandas
... NO OUTPUT ...

创建 conda 环境

您还可以使用用于集群管理的 Anaconda 跨集群管理 conda 环境。

要创建包含 Python 和 numpy 的新 conda 环境,请使用命令.conda create -n test_env numpy

在集群上,使用相同的命令并简单地添加acluster如下所示:

$ acluster conda create -n test_env numpy
All nodes (x2) response:
Conda environment "test_env" created

创建环境后,通过向命令添加-nname 选项来引用该命名环境 conda

$ acluster conda list -n test_env
All nodes (x2) response:
- 'sqlite: 3.8.4.1 (1)'
- 'python: 2.7.9 (3)'
- 'zlib: 1.2.8 (0)'
- 'openssl: 1.0.1k (1)'
- 'system: 5.8 (2)'
- 'tk: 8.5.18 (0)'
- 'setuptools: 15.2 (py27_0)'
- 'pip: 6.1.1 (py27_0)'
- 'readline: 6.2 (2)'
- 'numpy: 1.9.2 (py27_0)'

$ acluster conda install -n test_env requests
Installing (u'requests',) on cluster "d" - target: "*"
Node "ip-10-136-80-92.ec2.internal":
    Successful actions: 1/1
Node "ip-10-63-173-62.ec2.internal":
    Successful actions: 1/1

$ acluster conda list -n test_env
All nodes (x2) response:
- 'sqlite: 3.8.4.1 (1)'
- 'python: 2.7.9 (3)'
- 'zlib: 1.2.8 (0)'
- 'openssl: 1.0.1k (1)'
- 'system: 5.8 (2)'
- 'tk: 8.5.18 (0)'
- 'setuptools: 15.2 (py27_0)'
- 'pip: 6.1.1 (py27_0)'
- 'readline: 6.2 (2)'
- 'numpy: 1.9.2 (py27_0)'
- 'requests: 2.7.0 (py27_0)'

推送 conda 环境

您还可以使用 condaenvironment.yml文件将 conda 环境从客户端机器推送到集群:

$ acluster conda push ./environment.yml
['ip-10-234-8-208.ec2.internal'] nodes response:
Conda environment with "/tmp/anaconda-cluster/environment.yml" created
...

列出 conda 环境

要验证环境是否已推送到所有节点,请使用以下info命令:

$ acluster conda info -e
All nodes (x3) response:
# conda environments:
#
stats                    /opt/anaconda/envs/stats
root                  *  /opt/anaconda