美文网首页CDH自动化部署
CDH自动化部署--如何通过CM API创建一个集群

CDH自动化部署--如何通过CM API创建一个集群

作者: 润土1030 | 来源:发表于2018-11-23 16:37 被阅读68次

要想实现CDH自动化部署,第一步就是创建集群(Cluster),这篇文章讲的就是如何通过cm java api创建一个cluster。

第一步,先要配置好POM文件,引入CM API
<!-- CDH官方的REPO -->
   <repositories>
        <repository>
            <id>cdh.repo</id>
            <url>https://repository.cloudera.com/content/groups/cloudera-repos</url>
            <name>Cloudera Repository</name>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>cloudera-releases</id>
            <url>https://repository.cloudera.com/artifactory/libs-release-local</url>
            <name>Cloudera Releases Repository</name>
        </repository>
        <snapshotRepository>
            <id>cloudera-snapshots</id>
            <url>https://repository.cloudera.com/artifactory/libs-snapshot-local</url>
            <name>Cloudera Snapshots Repository</name>
        </snapshotRepository>
    </distributionManagement>
我们的CDH版本是5.11.0,根据不同的CDH版本匹配CM API 的版本,这块一定要对应起来,避免后面出现不必要的错误
<!--   cm.version 5.11.0  -->
<dependency>
          <groupId>com.cloudera.api</groupId>
          <artifactId>cloudera-manager-api</artifactId>
          <version>${cm.version}</version>
          <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-continuation</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-http</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-io</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-security</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-server</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-util</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-asm</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-expression</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.xml.bind</groupId>
                    <artifactId>jaxb-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
</dependency>

第二步,创建集群

        String host = "CDH MANAGER IP";
        int port = 7180;
        String user = "admin";
        String password = "admin";
        String clusterName = "automation-demo-cluster";
        //获得api
        ApiRootResource apiResource = new ClouderaManagerClientBuilder().withHost(host).withPort(port).withUsernamePassword(user, password).build();
        //根资源
        RootResourceV16 apiRoot = apiResource.getRootV16();
        //集群资源管理
        ClustersResourceV16 clustersResource = apiRoot.getClustersResource();
        ApiClusterList apiClusterList = new ApiClusterList();
        ApiCluster cluster = new ApiCluster();
        //设置集群的名称
        cluster.setName(clusterName);
        //设置集群的版本
        cluster.setVersion(ApiClusterVersion.CDH5);
        apiClusterList.add(cluster);
        //创建集群
        clustersResource.createClusters(apiClusterList);
  

登录CDH管理页面查看集群

1542961262(1).jpg

查看集群和删除集群

        //查看集群
        ApiCluster apiCluster = clustersResource.readCluster(clusterName);
        System.out.println("Cluster name is " + apiCluster.getName() + ", version is " + apiCluster.getVersion());
        //输出结果
        //Cluster name is automation-demo-cluster, version is CDH5

        //删除集群
        clustersResource.deleteCluster(clusterName);

至此,一个集群的基本操作我们就介绍完了,下一篇文章我会将如何创建HOST并把它添加进集群

相关文章

网友评论

    本文标题:CDH自动化部署--如何通过CM API创建一个集群

    本文链接:https://www.haomeiwen.com/subject/dvijqqtx.html