Cloudera Manager 官方 API

2019/07/19 CDH

Cloudera Manager API


前言

很多时候,想通过 CM 获取些集群信息。可以利用到 Cloudera 提供的官方 API

介绍

Cloudera Manager的 REST API 允许您使用现有工具,并以编程方式管理您的Hadoop集群。该API在 Cloudera Express 和 Cloudera Enterprise 中均可用,并附带开源客户端库。

官方支持 Python 和 Java

客户端 有 api 版本说明,cm5.15.0 对应 api19,cm6.2.0 对应 api32 版本。

根据 https://community.cloudera.com/t5/Cloudera-Manager-Installation/CM-Python-API/td-p/60338 提示

集群为5.7.1 ,使用 http://host:port/api/version 查阅之后为 v12。

还可以到 https://cloudera.github.io/cm_api/docs/releases/ 查询

# Python
api = ApiResource(cm_host, cm_port, version=12, username="admin", password="***")

# Java
public class ClouderaManagerUtil {
    public static void main(String[] args) {
        RootResourceV12 apiRoot = new ClouderaManagerClientBuilder()
                .withHost("100.73.12.13")
                .withUsernamePassword("admin", "admin")
                .build()
                .getRootV12();

        // 获取所有主机
        ApiHostList hosts = apiRoot.getHostsResource().readHosts(DataView.SUMMARY);
        Map<String, String> cmHost = new HashMap<String, String>();
        for (ApiHost apiHost : hosts.getHosts()) {
            cmHost.put(apiHost.getHostId(), apiHost.getIpAddress());
            System.out.println(apiHost.getHostId() + " " + apiHost.getIpAddress());
        }

        // 获取所有的集群
        ApiClusterList clusters = apiRoot.getClustersResource().readClusters(DataView.SUMMARY);
        for (
                ApiCluster apiCluster : clusters.getClusters()) {
            System.out.println(apiCluster.getName());
        }
    }
}

参考链接

Search

    Table of Contents