Использование REST API MapReduce
Компоненты MapReduce предоставляют REST API для отправки запросов к Application Master и History Server.
Используя MapReduce REST API, можно получить информацию о запущенных и завершенных приложениях, заданиях и задачах. Эту информацию также можно найти в веб-интерфейсе YARN.
Для выполнения некоторых запросов может быть нужен специальный доступ. Вы можете настроить доступы для пользователей вашего кластера в настройках ACL.
REST API Application Master
Application Master принимает запросы, отправленные через прокси. В качестве прокси можно использовать Resource Manager или настроить отдельный хост.
URL запроса может быть в одном из следующих форматов (вывод от этого не изменится):
Здесь:
-
<адрес-прокси>
— IP-адрес прокси-сервера; -
<порт>
— порт прокси-сервера; -
<ID-приложения>
— идентификатор приложения.
Пример запроса к Application Master:
$ curl -L http://127.0.0.1:8088/proxy/application_1713528166269_0001/ws/v1/mapreduce/info -H "Accept: application/xml"
Эта команда запрашивает информацию о запущенном приложении с идентификатором application_1713528166269_0001
в формате XML. Вы можете запросить ответ в формате JSON, передав в заголовке Accept: application/json
.
Ответ Application Master:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><info><appId>application_1713528166269_0001</appId><name>QuasiMonteCarlo</name><user>yarn</user><startedOn>1713529723410</startedOn><elapsedTime>38797</elapsedTime></info>
Полная спецификация API доступна в статье MapReduce Application Master REST API’s.
REST API History Server
REST API History Server предоставляет информацию о завершившихся приложениях.
Пример команды, которая возвращает список заданий:
$ curl -X GET http://<адрес-history-server>:8042/ws/v1/history/mapreduce/jobs -H "Accept: application/json"
Здесь <адрес-history-server>
— это IP-адрес или полное доменное имя хоста, на котором размещен History Server.
Эта команда запрашивает информацию о выполненных задачах (jobs) в формате JSON. Вы можете запросить ответ в формате XML, передав в заголовке Accept: application/xml
.
Существуют дополнительные параметры, которые можно использовать для фильтрации вывода:
-
user
— имя пользователя, запустившего приложение; -
state
— состояние задачи; -
queue
— имя очереди; -
limit
— количество объектов в выводе команды; -
startedTimeBegin
— задачи, которые начали выполняться после указанного времени (в миллисекундах); -
startedTimeEnd
— задачи, которые начали выполняться до указанного времени (в миллисекундах); -
finishedTimeBegin
— задачи, которые завершились после указанного времени (в миллисекундах); -
finishedTimeEnd
— задачи, которые завершились до указанного времени (в миллисекундах).
Пример команды, запрашивающей список задач, которые начались в промежутке времени между 1713770628450
и 1713770680980
:
$ curl -X GET http://127.0.0.1:8088:19888/ws/v1/history/mapreduce/jobs?startedTimeBegin=1713770628450&startedTimeEnd=1713770680980 -H "Accept: application/json"
Ответ сервера:
{"jobs":{"job":[{"submitTime":1713770623388,"startTime":1713770628457,"finishTime":1713770680975,"id":"job_1713770455913_0001","name":"QuasiMonteCarlo","queue":"default","user":"yarn","state":"SUCCEEDED","mapsTotal":16,"mapsCompleted":16,"reducesTotal":1,"reducesCompleted":1},{"submitTime":1713771341013,"startTime":1713771345766,"finishTime":1713771398188,"id":"job_1713770455913_0002","name":"QuasiMonteCarlo","queue":"default","user":"yarn","state":"SUCCEEDED","mapsTotal":16,"mapsCompleted":16,"reducesTotal":1,"reducesCompleted":1}]}}
Полная спецификация API доступна в статье MapReduce History Server REST API’s.