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)