Cloudera API访问

多租户管理页面(admin)操作  

  cloudera 管理页面页面操作多租户是这样的:
  进入到YARN的服务页面,点击Resource Pool,你将会看到已经存在的资源池,然后再点击资源池表格右上角的”configuration“,进入到配置页面;默认是进入第一个Tab:Resource Pools,这个表格激素和现有的YARN资源队列;你可以在这里面添加新的队列,并通过制定submit user和adminuser来指定租户(可以指定多个),同时可以对于指定的租户的资源进行管控。

  租户就是Linux用户;
  placement rule用来决定application采用那个应用池子;
  submit和admin共同来限制用户(必须要两者都指定才能生效);
  子节点配置将会覆盖父节点配置;
  注意在位队列指定资源的时候有个min和max,min最好不要填写;否则在不满足最小资源的情况,及时提交的应用被Accepted,仍然无法执行;min不填写,即没有下限,有点资源,应用就可以跑起来啦!

  就是这个功能,如果想要通过编程的方式进行处理,找了大概半天时间,终于把API方式搞懂了。
  cloudera官方文档,关于cloudera manager API
  https://www.cloudera.com/documentation/enterprise/5-11-x/topics/cm_intro_api.html
  

  java API example(但是里面有坑,比如cloudera仓库路径写的就不对,代码参考下面)
  https://www.cloudera.com/documentation/enterprise/5-11-x/topics/cm_intro_automation_api.html#concept_y1t_5dz_zk
  

  查看所有的可查看API的服务
  http://10.1.108.6:7180/api/v16/clusters/Cluster%201/services/

  cloudera的API列表(点开链接里面有针对此API的操作说明),注意版本号看本地的clouderan manager的版本情况而定
  http://cloudera.github.io/cm_api/apidocs/v16/

  cloudera的API java-doc
  http://cloudera.github.io/cm_api/javadoc/5.11.0/index.html

  cloudera的client源码路径:
  https://github.com/cloudera/cm_api

代码
  1. 在pom中添加:

 1     <repositories>
 2         <repository>
 3             <id>cdh.repo</id>
 4             <url>https://repository.cloudera.com/cloudera/cloudera-repos</url>
 5             <name>Cloudera Repository</name>
 6         </repository>    
 7     </repositories>
 8     <dependencies>
 9         <dependency>
10             <groupId>com.cloudera.api</groupId>
11             <artifactId>cloudera-manager-api</artifactId>
12             <version>5.12.1</version> <!-- Set to the version of Cloudera Manager you use -->
13         </dependency>
14  </dependencies>

  2.java代码

 1         RootResourceV17 apiRoot = new ClouderaManagerClientBuilder().withHost("10.1.108.6")
 2                 .withUsernamePassword("admin", "admin").build().getRootV17();
 3         
 4         ApiConfig apiConfig = new ApiConfig();
 5         apiConfig.setName("yarn_fs_scheduled_allocations");
 6         String value = "XXXX"
 7         apiConfig.setValue(value);
 8         apiConfig.setSensitive(false);
 9         ApiServiceConfig svrConfig = new ApiServiceConfig();
10         
11         svrConfig.add(apiConfig);
12         apiRoot.getClustersResource().getServicesResource("Cluster 1").updateServiceConfig("yarn", "update queues", svrConfig);
13         apiRoot.getClustersResource().poolsRefresh("Cluster 1");
14         System.out.println("Complete!");

  两处加粗和下划线,第一个地方是value,value的值可以通过下面的路径访问到,该路径返回的是YARN的config的全部内容,其中有一个节点name是:yarn_fs_scheduled_allocations,value值即为要填充到XXXX中内容;如果想要看看格式化后的json内容,拷贝到文本编辑器,替换\"为”,再找一个json格式化的工具格式化即可。
  其中第二处加粗下划线是指修改完成后一定要刷新配置,这个就相当于在页面中修改配置后,点击“Refresh Dynamic Resource Pools"是一样,将配置刷到内存中。

  另外一个地方就是版本,想要查看自己的cloudera manager的版本(牵涉到接口版本问题),http://cloudera_admin_site:7180/api/version

posted on 2017-12-02 12:04  下士闻道  阅读(708)  评论(0编辑  收藏  举报

导航