• 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

  • 相关阅读:
    带结点与不带结点用头插法和尾插法创建单链表
    高中数学教资面试记录
    学习爬虫——test1——模拟浏览器去访问网站
    解决centos虚拟机中使用virt-manager创建虚拟机遇到的镜像导入问题
    pycharm更改背景颜色
    控制函数调用的流程
    简单的获取list的下标
    种一棵树的时间,不是以前,也不是未来的某一天,而是现在。
    将八位教师随机分配到三个办公室——python
    使用tomcat部署idea项目方法(1)
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/7953852.html
Copyright © 2020-2023  润新知