Определение количества сокращаемых слотов в кластере Hadoop - PullRequest
1 голос
/ 31 октября 2019

Используя Java API, как определить общее количество сокращенных слотов текущего кластера? (Если я смогу узнать количество используемых в данный момент слотов , это было бы бонусом.)

Мой пример использования: у меня есть задание Hadoop, которое запускает другое задание Hadoop. Для второй работы я должен установить количество редукторов. И это должно основываться на количестве доступных слотов. Кроме того, размер кластера может быть изменен.

Я использую Hadoop 2.7.3. Обычно он работает на Amazon EMR, но я бы предпочел решение, использующее только API Hadoop.

1 Ответ

1 голос
/ 31 октября 2019

Вы можете использовать Java HTTP-клиент для запроса метрик кластера у YARN, используя ResourceManager REST API .

Ответом будет JSON, содержащий общую, выделенную, зарезервированную и доступную память и vcores в кластере.

$ curl -G -k https://<resource-manager-host>:8090/ws/v1/cluster/metrics
{"clusterMetrics":      
{"appsSubmitted":999999,"appsCompleted":999999,"appsPending":0,"appsRunning":99,"appsFailed":99,"appsKilled":999,
 "reservedMB":0,"availableMB":99999999,"allocatedMB":9999999,
"reservedVirtualCores":0,"availableVirtualCores":9999,"allocatedVirtualCores":9999,
"containersAllocated":9999,"containersReserved":0,"containersPending":999,
"totalMB":9999999,"totalVirtualCores":99999,
"totalNodes":999,"lostNodes":9,"unhealthyNodes":9,"decommissioningNodes":0,"decommissionedNodes":99,"rebootedNodes":0,"activeNodes":999}}
$

Не уверен, что вы подразумеваете под "слотами", потому что вы действительно можете указать размер контейнера редуктора при отправке задания MR.

...