python - 监控节点集群

标签 python hadoop statistics cluster-computing monitor

我在一个集群中有 > 10 个节点。我已经使用 Cloudera(YARN、HBase、Hue、Hadoop FS、Spark、Flink)在集群上安装了 Hadoop 堆栈。有没有一种简单的方法来收集所有节点的全局统计信息(在 CPU 使用率、内存使用率和网络使用率方面)并用 Python 读出?使用 Python 的目的是让我可以完全自由地指定绘图并确保报告中的绘图样式统一。我可以使用哪个软件来完成此操作?它不必分发,只需一个简单的库就足够了。

最佳答案

为此,我建议考虑使用 ansible。 这是一个简单的 playbookinventory 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_inventory 是包含主机列表的文件
  • stats-playbook.yml就是上面打印出来的文件

当然,根据您打算如何存储收集到的数据,实现方式可能会有所不同,但我认为总体思路很明确。无论如何,在 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)

关于python - 监控节点集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425519/

相关文章:

android - Kivy:跨平台通知图标

python - 尝试使用 Beautiful Soup - Python 提取 html 页面时出现“charmap”编解码器错误

hadoop - HDFS的位置感知

python - 为什么这看起来不是随机的?

python - 从字符串中提取键和值

python - django models.DateField 防止过去

java - Java 中的嵌入式 Pig : java. io.IOException:无法运行程序 "cygpath"

hadoop - 使用PIG加入后过滤数据

statistics - 使用两个因变量进行回归

python - 如何根据中心极限定理绘制正态分布曲线