集群管理

概览

用于集群管理的 Anaconda 提供了轻松与集群交互的功能,包括:

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

对于acluster下面显示的命令,您可以选择指定一个 --cluster/-x选项来指定要操作的目标集群。如果只有一个集群正在运行,则不需要此选项。

SSH 访问

该命令可用于通过 SSH 连接到集群内的任何节点。acluster ssh

第一个(可选)参数是一个引用节点的零索引数字,其中0是头节点,1是第一个计算节点,依此类推。

注意:此功能需要 SSH。Windows 用户:安装PuTTY等 SSH 客户端。

执行命令

该命令允许跨集群上的多个节点执行命令。此功能通过盐(默认)或结构(使用标志)执行。acluster cmd--ssh/-s

Salt 提供更快的远程命令执行时间(尤其是在大型集群中),假设 salt 已安装并在集群上运行。Salt 默认安装在云提供商上,可以使用命令安装在裸机集群上。acluster install salt

Fabric 提供基于 SSH 的远程命令执行,这在大集群中可能会很慢,但不需要在集群上安装 salt。使用结构,您还可以使用该--target/-t选项定位特定节点。该--target/-t选项可以接收关键字“head”和“compute”、一个数字(零索引,其中 0 是头节点,1 是第一个计算节点)或两个用逗号分隔的数字以定位一组连续节点.

例子:

$ acluster cmd 'date'
Executing command "date" target: "*" cluster: "demo_cluster"
4 nodes response: Thu May 14 19:21:48 UTC 2015
1 nodes response: Thu May 14 19:21:44 UTC 2015
1 nodes response: Thu May 14 19:21:47 UTC 2015

$ acluster cmd 'date' --ssh
54.196.149.0: Thu May 14 19:22:06 UTC 2015
54.159.15.86: Thu May 14 19:22:03 UTC 2015
107.21.159.226: Thu May 14 19:22:06 UTC 2015
107.20.60.246: Thu May 14 19:22:06 UTC 2015
54.237.177.104: Thu May 14 19:22:06 UTC 2015
54.227.91.24: Thu May 14 19:22:06 UTC 2015

$ acluster cmd 'date' --ssh -t head
107.21.159.226: Thu May 14 19:23:02 UTC 2015

$ acluster cmd 'date' --ssh -t 3,6
54.196.149.0: Thu May 14 19:23:29 UTC 2015
54.159.15.86: Thu May 14 19:23:26 UTC 2015
54.227.91.24: Thu May 14 19:23:29 UTC 2015

上传/下载文件

命令和允许将文件上传到集群中的任何节点并从其下载。默认情况下,和 命令以头节点为目标。acluster putacluster getputget

两者的putget命令具有相同的--target/-t选项,其具有相同的功能cmd-ssh/-s标志。

例子:

$ acluster put environment.yml /tmp/env.yml
Uploading file "environment.yml" to "/tmp/env.yml" - cluster: "demo_cluster" - hosts:
"['107.21.159.226']"

$ acluster put environment.yml /tmp/env.yml --all
Uploading file "environment.yml" to "/tmp/env.yml" - cluster: "demo_cluster" - hosts:
"['107.21.159.226', '107.20.60.246', '54.237.177.104', '54.159.15.86', '54.196.149.0',
'54.227.91.24']"

$ acluster put environment.yml /tmp/env.yml -t ,3
Uploading file "environment.yml" to "/tmp/env.yml" - cluster: "demo_cluster" - hosts:
"['107.21.159.226', '107.20.60.246', '54.237.177.104']"

$ acluster put environment.yml /tmp/env.yml -t compute
Uploading file "environment.yml" to "/tmp/env.yml" - cluster: "demo_cluster" - hosts:
"['107.20.60.246', '54.237.177.104', '54.159.15.86', '54.196.149.0', '54.227.91.24']"

get命令具有类似的行为。尽管该-target/-t选项也可用,但重复下载相同的文件可能没有意义,因为它会被覆盖。

例子:

$ acluster get /tmp/env.yml env2.yml
Downloading file "/tmp/env.yml" to "env2.yml" - cluster: "demo_cluster" - hosts:
"['107.21.159.226']"

$ acluster get /tmp/env.yml env2.yml --all
Downloading file "/tmp/env.yml" to "env2.yml" - cluster: "demo_cluster" - hosts:
"['107.21.159.226', '107.20.60.246', '54.237.177.104', '54.159.15.86', '54.196.149.0',
 '54.227.91.24']"
Warning: Local file /tmp/env2.yml already exists and is being overwritten.
Warning: Local file /tmp/env2.yml already exists and is being overwritten.

命令历史

该命令显示以前使用. 默认情况下,显示最近的十个命令。acluster historyacluster

$ acluster history
2015-06-09 23:39:22,515: acluster create demo_cluster --profile profile_name
2015-06-10 00:00:46,151: acluster ssh
2015-06-10 00:01:35,304: acluster acluster conda install numpy scipy
2015-06-10 00:02:01,029: acluster open notebook

集中日志

您可以安装 Elasticsearch、Logstash 和 Kibana (ELK) 插件并使用它们来收集、搜索和分析数据。当您安装 ELK 插件时,它们会预先配置为集中记录其他 Anaconda 的集群管理插件。有关插件的更多信息,请参阅 插件文档。

要安装 ELK 插件,请在创建或配置集群之前在集群配置文件中插入以下内容:

plugins:
  - elasticsearch
  - logstash
  - kibana

或者,使用以下命令在活动集群上安装 ELK 插件:

$ acluster install elasticsearch logstash kibana

ELK 插件安装后,它们会开始收集各种服务的日志,日志数据可以使用 Elasticsearch 进行搜索,并使用 Kibana 进行可视化。您可以使用以下命令在浏览器中打开 Kibana UI:

$ acluster open kibana

默认情况下,Kibana 中提供以下索引模式:

YYYY-MM-DD
salt
hdfs
yarn
spark_yarn
spark_standalone
zookeeper
impala
hive
hbase
hadoop-httpfs
mapreduce
syslog

请注意,一旦将 ELK 插件安装到集群上,您就可以在许多不同的工作流程中使用它们,包括:

  • 查看和搜索所有集群相关插件的日志
  • 查看 Spark 或 YARN 作业的日志以进行集中作业监控和故障排除
  • 利用应用程序的集中日志记录功能

用于集群管理客户端信息的 Anaconda

该命令显示与用于集群管理客户端安装的 Anaconda 相关的版本信息。acluster info

$ acluster info
anaconda-cluster version: 1.0
Platform: Darwin-14.3.0-x86_64
Processor: i386
Byte-ordering: little
Python version: 2.7.10 |Continuum Analytics, Inc.| (default, May 28 2015, 17:04:42)
[GCC 4.2.1 (Apple Inc. build 5577)]
apache-libcloud version: 0.16.0
yaml version: 3.11

进阶:运行 Salt 模块

默认情况下,salt 在其默认模块中提供了相当多的功能。使用该命令可以使用所有这些功能。acluster function

例如,您可以 ping 所有集群节点以查看它们是否可用:

$ acluster function test.ping
ip-10-153-156-45.ec2.internal:
    True
ip-10-169-57-125.ec2.internal:
    True
ip-10-181-18-153.ec2.internal:
    True
ip-10-144-199-24.ec2.internal:
    True
ip-10-113-145-230.ec2.internal:
    True
ip-10-136-78-206.ec2.internal:
    True

还提供高级功能,例如列出与节点关联的所有 IP 地址:

$ acluster function network.ipaddrs
ip-10-169-57-125.ec2.internal:
    - 10.169.57.125
ip-10-144-199-24.ec2.internal:
    - 10.144.199.24
ip-10-181-18-153.ec2.internal:
    - 10.181.18.153
ip-10-153-156-45.ec2.internal:
    - 10.153.156.45
ip-10-136-78-206.ec2.internal:
    - 10.136.78.206
ip-10-113-145-230.ec2.internal:
    - 10.113.145.230

另一个常用的 salt 命令可用于使用系统包管理器安装包:

 $ acluster function pkg.install httpd
 ip-10-136-78-206.ec2.internal:
     ...
     httpd:
         ----------
         new:
             2.2.15-39.el6.centos
         old:
     ...

 ip-10-144-199-24.ec2.internal:
     ...
     httpd:
         ----------
         new:
             2.2.15-39.el6.centos
         old:
     ...

...

有关 salt 命令的更多信息,请参阅http://docs.saltstack.com/en/latest/ref/modules/all/

高级:同步盐公式

该命令是一项高级功能,可将 Salt 公式从客户端同步到头节点,然后跨集群同步。acluster sync