Я думаю, что сосредоточиться на каркасах не совсем то, что вы хотели бы. Что вы после этого, вероятно, является использование Mesos Подчиненный, который может быть запрошена с помощью вызова
http://{mesos-master}:5050/master/state-summary
В ответ JSON, вы найдете slaves
свойство, которое содержит массив подчиненных объектов:
{
"hostname": "192.168.0.3",
"cluster": "mesos-hw-cluster",
"slaves": [{
"id": "bd9c29d7-8530-4c5b-8c50-5d2f60dffbf6-S2",
"pid": "slave(1)@192.168.0.1:5051",
"hostname": "192.168.0.1",
"registered_time": 1456826950.99075,
"resources": {
"cpus": 12.0,
"disk": 1840852.0,
"mem": 63304.0,
"ports": "[31000-32000]"
},
"used_resources": {
"cpus": 5.75,
"disk": 0.0,
"mem": 14376.0,
"ports": "[31000-31000, 31109-31109, 31267-31267, 31699-31699, 31717-31717, 31907-31907, 31979-31980]"
},
"offered_resources": {
"cpus": 0.0,
"disk": 0.0,
"mem": 0.0
},
"reserved_resources": {},
"unreserved_resources": {
"cpus": 12.0,
"disk": 1840852.0,
"mem": 63304.0,
"ports": "[31000-32000]"
},
"attributes": {},
"active": true,
"version": "0.27.1",
"TASK_STAGING": 0,
"TASK_STARTING": 0,
"TASK_RUNNING": 7,
"TASK_FINISHED": 18,
"TASK_KILLED": 27,
"TASK_FAILED": 3,
"TASK_LOST": 0,
"TASK_ERROR": 0,
"framework_ids": ["bd9c29d7-8530-4c5b-8c50-5d2f60dffbf6-0000", "bd9c29d7-8530-4c5b-8c50-5d2f60dffbf6-0002"]
},
...
}
Вы можете выполнить итерацию по всем ведомым объектам и вычислить общее использование ресурсов, суммируя resources
, а затем вычтите резюме used_resources
.
См
Спасибо и Tobi. Мы действительно учитываем использование подчиненного и общего использования ресурсов кластера. Но часто мы замечаем, что, хотя какая-то работа была активной, долгое время не получалось ресурсов, так как все ресурсы использовались другими работами. В этом случае мы хотим, чтобы все те активные структуры, которым не были выделены какие-либо ресурсы вообще. Простым потоком было 3 искровых разряда и 2 раба. 2 рабочих места заняли все ресурсы этих двух подчиненных, а 3-я работа не получала никаких предложений в течение длительного времени, также загрузка и использование процессора как ведомого устройства были низкими, поэтому никаких указаний там –
Хммм, я сомневаюсь, что это правильный способ сделать это , Вы должны убедиться, что вы ограничены ресурсами исполнителя Spark (см. Http://spark.apache.org/docs/latest/running-on-mesos.html#configuration). В противном случае он будет напрямую принимать все доступные ресурсы ... Взгляните на документы API Mesos, есть конечные точки, которые должны предоставить вам информацию. Но сначала я исправлю поведение Spark. – Tobi
Чтобы добавить: то, что вы на самом деле видите, если вы делаете «верх» на подчиненном устройстве, не обязательно должно быть тем, что вы видите в «used_resources» подчиненного. IMHO Spark захватывает всю имеющуюся память и ядра, что не означает, что использование ОС на 100%. Тем не менее, то, что считается с точки зрения Мезоса, - это ресурсы, взятые задачами Spark ... – Tobi