www*_*com 5 python statistics hadoop monitor cluster-computing
我在群集中有> 10个节点.我使用Cloudera(YARN,HBase,Hue,Hadoop FS,Spark,Flink)在集群上安装了Hadoop堆栈.是否有一种简单的方法来收集所有节点的全局统计信息(在CPU使用率,内存使用和网络使用方面)并使用Python读取它?使用Python的目的是我可以完全自由地指定绘图并确保报表中的统一绘图样式.我可以使用哪种软件来完成此任务?它不必分发,只需一个简单的库就足够了.
我建议考虑使用ansible来实现此目的。这是一个简单的剧本,它收集清单文件中指定的主机上的一些数据并将其附加到本地文件中:
- 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
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式运行它:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |