集群管理¶
概览¶
用于集群管理的 Anaconda 提供了轻松与集群交互的功能,包括:
- 到群集节点的安全外壳 (SSH)
- 在集群节点上执行命令
- 从集群节点上传(放置)和下载(获取)文件
- 执行 salt 模块命令:http : //docs.saltstack.com/en/latest/ref/modules/all/
有关所有可用命令的简要概述,请查看
.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 put
acluster get
put
get
两者的put
和get
命令具有相同的--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 history
acluster
$ 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/