我有>集群中的10个节点。我使用Cloudera(YARN,HBase,Hue,Hadoop FS,Spark,Flink)在集群上安装了Hadoop堆栈。是否有一种简单的方法来收集所有节点的全局统计信息(在CPU使用率,内存使用和网络使用方面)并使用Python读取它?使用Python的目的是我可以完全自由地指定绘图并确保报表中的统一绘图样式。我可以使用哪种软件来完成此任务?它不需要分发,只需一个简单的库即可。
答案 0 :(得分:1)
我建议考虑使用 ansible 来实现此目的。 这是一个简单的playbook,用于收集inventory file中指定的主机上的一些数据,并将其附加到本地文件中:
- hosts: all
remote_user: your_user
tasks:
- name: collect load average
shell: cat /proc/loadavg
register: cluster_node_la
- name: write to local disk
lineinfile: dest=/tmp/cluster_stat create=yes line="{{ ansible_fqdn }}:{{ cluster_node_la.stdout_lines }}"
delegate_to: 127.0.0.1
您可以按如下方式运行它:
ansible-playbook -i ansible-inventory stats-playbook.yml --forks=1
当然,根据您将如何存储收集的数据,它可能会以不同的方式实施,但我认为一般的想法是明确的。无论如何,有很多方法可以在 ansible 中解决它。
此外,ansible有python API,你可以直接从python做大部分事情!即,这是我们收集群集配置的方式:
import pprint
import ansible.runner
import ansible.inventory
inventory_file = 'ansible_inventory' # see ansible inventory files
inventory = ansible.inventory.Inventory(inventory_file)
runner = ansible.runner.Runner(
module_name='setup',
module_args='',
pattern='all',
inventory=inventory
)
cluster_facts = runner.run()
pprint.pprint(cluster_facts)