我正在嘗試使用Cloudera Manager API獲取在我的CDH5.8集羣上運行的Flume代理的數量。Cloudera Manager API獲取Flume代理的列表
https://cloudera.github.io/cm_api/
到現在我無法弄清楚它的RESTful型號我應該考慮或相關的Java類。如果任何一個能幫助或通知引用的Java類來考慮,這將是巨大的
問候
我正在嘗試使用Cloudera Manager API獲取在我的CDH5.8集羣上運行的Flume代理的數量。Cloudera Manager API獲取Flume代理的列表
https://cloudera.github.io/cm_api/
到現在我無法弄清楚它的RESTful型號我應該考慮或相關的Java類。如果任何一個能幫助或通知引用的Java類來考慮,這將是巨大的
問候
如果您使用以下API:
的items
的大小返回的JSON對象中的數組將是Flume代理的數量。要查找每個項目的運行代理數量,請檢查roleState
是否等於STARTED
。
Java類ApiRole
可能是您需要的。 whirr-cm示例中的代碼片段與您想要的很接近。
for (ApiService apiService : apiResourceRootV3.getClustersResource().getServicesResource(getName(cluster))
.readServices(DataView.SUMMARY)) {
for (ApiRole apiRole : apiResourceRootV3.getClustersResource().getServicesResource(getName(cluster))
.getRolesResource(apiService.getName()).readRoles()) {
if (apiRole.getRoleState().equals(ApiRoleState.STARTED)) {
servicesNotStarted.remove(apiRole.getName());
}
}
}
你就只需要這個限制在水槽的服務。
謝謝您的回覆,我將通過代碼去。我發現了一個使用RESTful模型的解決方法[curl -u admin:admin「localhost:7180/api/v13/clusters/Cloudera%20QuickSart/servic es/{servicename}/roles」]現在我試圖阻止角色代理)但失敗。我嘗試了[curl -X POST -u admin:admin「localhost:7180/api/v13/clusters/Cloudera%20QuickS tart/services/flume/roles/agent11/roleCommands/stop」] – Rana
如果您試圖停止一個Flume代理,你需要做這樣的事情:curl -X POST -u admin:admin -H「Content-Type:application/json」-d'{「items」:[「agent11」]}'' localhost:7180/api/v13/clusters/Cloudera%20QuickS tart/services/flume/roleCommands/stop'。有關更多信息,請參見https://github.com/cloudera/cm_api/wiki/Start-Stop-Restart-JobTracker-Role和https://stackoverflow.com/questions/25004746/restart-jobtracker-through-cloudera-manager-api。例子。 – tk421
非常感謝,它按預期工作。 – Rana