YARN Service API
YARN Service API
이 문서는 YARN Service 프레임워크의 REST API에 대해 설명합니다. 사용자는 간단한 JSON 스펙을 통해 이 API로 YARN에서 서비스를 배포하고 수명주기(생성, 시작, 중지, 확장, 삭제, 업그레이드)를 관리합니다.
출처: 문서
본문
개요 (Overview)
YARN Service API는 서비스 정의(Yarnfile)를 JSON으로 받아 YARN에서 장기 실행 서비스를 배포/관리합니다. API 서버는 무상태(stateless)이며, 여러 인스턴스 앞에 로드 밸런서를 두어 HA를 구성할 수 있습니다.
기본 엔드포인트는 ResourceManager 웹 주소의 /app/v1 경로를 사용합니다. (http://<rm-http>:8088/app/v1/...)
서비스 정의 (JSON 스펙)
주요 필드는 다음과 같습니다.
| 필드 | 설명 | | name | 서비스 이름(사용자당 고유). | components | 서비스의 컴포넌트 배열. | configuration | 서비스 전체에 적용되는 환경/속성/파일 설정. | lifetime | 서비스 자동 만료 시간(초, 선택). | queue | 서비스가 실행될 YARN 큐. | dependencies | 다른 서비스와의 의존성.
각 컴포넌트는 name, number_of_containers, launch_command, resource(cpus/메모리), configuration(env, files 등), artifact(사용할 도커 이미지/타르볼) 등을 가집니다.
API 엔드포인트
서비스
POST /app/v1/services: 새 서비스를 생성(배포).GET /app/v1/services: 사용자의 모든 서비스 목록.GET /app/v1/services/{serviceName}: 특정 서비스의 상세 정보.PUT /app/v1/services/{serviceName}: 서비스를 변경(주로 컴포넌트 확장/축소 flex).DELETE /app/v1/services/{serviceName}: 서비스를 삭제.
컴포넌트
GET /app/v1/services/{serviceName}/components: 컴포넌트 목록.GET /app/v1/services/{serviceName}/components/{componentName}: 특정 컴포넌트 정보.PUT /app/v1/services/{serviceName}/components/{componentName}: 컴포넌트 확장.
인스턴스
GET /app/v1/services/{serviceName}/components/{componentName}/instances: 컴포넌트의 컨테이너 인스턴스 목록.GET /app/v1/services/{serviceName}/instances: 전체 인스턴스 목록.
예시
# 서비스 생성
curl -X POST -H "Content-Type: application/json" \
-d @app.json http://<host>:8088/app/v1/services
# 서비스 목록
curl http://<host>:8088/app/v1/services
# 컴포넌트 확장 (flex up/down)
curl -X PUT -H "Content-Type: application/json" \
-d '{"components":[{"name":"comp1","number_of_containers":2}]}' \
http://<host>:8088/app/v1/services/my-service
# 서비스 삭제
curl -X DELETE http://<host>:8088/app/v1/services/my-service
응답 형식
응답은 JSON이며, 서비스 상태(ACCEPTED, DEPLOYING, RUNNING, STOPPED, FAILED 등), 진단 정보, 상태 정보를 포함합니다. 비동기 작업의 진행을 추적할 수 있습니다.
더 알아보기 (Learn more)
- 원문: 문서