通过cm api 单独启动和关闭某台主机的datanode进程。
测试环境
- cdh版本 Cloudera Express 5.11.0
- 需求:停止hadoop03主机上面的datanode进程
具体命令
- 先获取集群各个主机所对应的hostId
这个可以从数据库里面获取
SELECT name,HOST_IDENTIFIER FROM `scm`.`HOSTS`;
可以看到hadoop03上面对于的hostId为e2c11728-faf8-45ea-abe5-35932fbc2749。
2. 通过hostId 去获取datanode的roleName
curl -u admin:admin http://cm_ip:7180/api/v16/hosts/e2c11728-faf8-45ea-abe5-35932fbc2749
得到的结果
➜ ~ curl -u admin:admin http://cm_ip:7180/api/v16/hosts/e2c11728-faf8-45ea-abe5-35932fbc2749
{
"hostId" : "e2c11728-faf8-45ea-abe5-35932fbc2749",
"ipAddress" : "cm_ip",
"hostname" : "hadoop03",
"rackId" : "/OK3",
"lastHeartbeat" : "2019-08-08T07:57:32.893Z",
"healthSummary" : "GOOD",
"healthChecks" : [ {
"name" : "HOST_AGENT_LOG_DIRECTORY_FREE_SPACE",
"summary" : "GOOD",
"suppressed" : false
}, , {
"name" : "HOST_SCM_HEALTH",
"summary" : "GOOD",
"suppressed" : false
} ],
"roleRefs" : [ {
"clusterName" : "cluster",
"serviceName" : "hive",
"roleName" : "hive-HIVEMETASTORE-f2e757abb270ac60de67ad4a42599e4b"
}, {
"clusterName" : "cluster",
"serviceName" : "hdfs",
"roleName" : "hdfs-NAMENODE-f2e757abb270ac60de67ad4a42599e4b"
}....
],
"maintenanceMode" : false,
"maintenanceOwners" : [ ],
"commissionState" : "COMMISSIONED",
"numCores" : 24,
"numPhysicalCores" : 12,
"totalPhysMemBytes" : 135301316608,
"entityStatus" : "GOOD_HEALTH",
"clusterRef" : {
"clusterName" : "cluster"
}
}%
然后找到datanode的roleName为:
hdfs-DATANODE-f2e757abb270ac60de67ad4a42599e4b
3. 停止该进程
curl -u admin:admin -X POST -H "Content-Type: application/json" -d '{"items":["hdfs-DATANODE-f2e757abb270ac60de67ad4a42599e4b"]}' "http://cm_ip:7180/api/v16/clusters/cluster/services/hdfs/roleCommands/stop"
登陆cm页面发现该节点上datanode已经停止。