History Server

History Server (히스토리 서버)

Flink에는 해당 Flink 클러스터가 종료된 후에도 완료된 작업과 애플리케이션의 통계를 조회할 수 있는 History Server가 있습니다. 또한 HTTP 요청을 받아 JSON 데이터로 응답하는 REST API를 노출합니다. History Server를 JobManager와 함께 구성하면 완료된 작업의 상태와 통계를 계속해서 조회할 수 있습니다.

출처: 문서

본문

개요 (Overview)

HistoryServer를 사용하면 JobManager가 보관(archive)한 완료된 작업과 애플리케이션의 상태와 통계를 조회할 수 있습니다.

HistoryServer JobManager를 구성한 뒤에는 해당 시작 스크립트로 HistoryServer를 시작하고 중지합니다.

# Start or stop the HistoryServer
bin/historyserver.sh (start|start-foreground|stop)

기본적으로 이 서버는 localhost에 바인딩되고 포트 8082에서 수신 대기합니다. 현재는 독립 실행형(standalone) 프로세스로만 실행할 수 있습니다.

구성 (Configuration)

보관과 표시를 위해 구성 키 jobmanager.archive.fs.dirhistoryserver.archive.fs.refresh-interval을 조정해야 합니다.

JobManager — 완료된 작업과 애플리케이션의 보관은 JobManager에서 수행되며, 보관된 작업·애플리케이션 정보를 파일 시스템 디렉터리에 업로드합니다. Flink 구성 파일에서 jobmanager.archive.fs.dir로 디렉터리를 설정해 완료된 작업과 애플리케이션을 보관할 디렉터리를 구성할 수 있습니다.

# Directory to upload completed job and application information
jobmanager.archive.fs.dir: hdfs:///archives

특정 디렉터리 구조에 대한 자세한 내용은 FLIP-549: Support Application Management를 참조하세요.

HistoryServer — HistoryServer는 historyserver.archive.fs.dir로 쉼표로 구분된 디렉터리 목록을 감시하도록 구성할 수 있습니다. 구성된 디렉터리는 정기적으로 폴링되어 새 보관 파일을 찾습니다. 폴링 간격은 historyserver.archive.fs.refresh-interval로 구성할 수 있습니다.

# Monitor the following directories for completed jobs and applications
historyserver.archive.fs.dir: hdfs:///archives

# Refresh every 10 seconds
historyserver.archive.fs.refresh-interval: 10000

포함된 보관 파일은 다운로드되어 로컬 파일 시스템에 캐시됩니다. 이 로컬 디렉터리는 historyserver.web.tmpdir로 구성합니다.

구성 옵션의 전체 목록은 구성 페이지를 확인하세요.

로그 통합 (Log Integration)

Flink는 완료된 작업의 로그를 보관하는 내장 방법을 제공하지 않습니다. 하지만 이미 로그 보관 및 탐색 서비스가 있다면, HistoryServer가 이를 통합하도록 구성할 수 있습니다(historyserver.log.jobmanager.url-patternhistoryserver.log.taskmanager.url-pattern 사용). 이렇게 하면 HistoryServer WebUI에서 관련 JobManager/TaskManager의 로그로 직접 연결할 수 있습니다.

# HistoryServer will replace <jobid> with the relevant job id
historyserver.log.jobmanager.url-pattern: http://my.log-browsing.url/<jobid>

# HistoryServer will replace <jobid> and <tmid> with the relevant job id and taskmanager id
historyserver.log.taskmanager.url-pattern: http://my.log-browsing.url/<jobid>/<tmid>

사용 가능한 요청 (Available Requests)

다음은 사용 가능한 요청 목록입니다. 모든 요청은 http://hostname:8082/jobs 형태이며, 아래에는 URL의 path 부분만 나열했습니다.

꺾쇠 괄호 안의 값은 변수입니다. 예를 들어 http://hostname:port/jobs/<jobid>/exceptionshttp://hostname:port/jobs/7684be6004e4e955c2a558a9bc463f65/exceptions처럼 요청해야 합니다.

이 REST 엔드포인트의 응답 형식은 REST API 문서의 설명과 일치합니다.

애플리케이션 관련 요청

  • /applications/overview
  • /applications/<applicationid>
  • /applications/<applicationid>/jobmanager/config
  • /applications/<applicationid>/exceptions

작업 관련 요청

  • /config
  • /jobs/overview
  • /jobs/<jobid>
  • /jobs/<jobid>/vertices
  • /jobs/<jobid>/config
  • /jobs/<jobid>/exceptions
  • /jobs/<jobid>/accumulators
  • /jobs/<jobid>/vertices/<vertexid>
  • /jobs/<jobid>/vertices/<vertexid>/subtasktimes
  • /jobs/<jobid>/vertices/<vertexid>/taskmanagers
  • /jobs/<jobid>/vertices/<vertexid>/accumulators
  • /jobs/<jobid>/vertices/<vertexid>/subtasks/accumulators
  • /jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>
  • /jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>/attempts/<attempt>
  • /jobs/<jobid>/vertices/<vertexid>/subtasks/<subtasknum>/attempts/<attempt>/accumulators
  • /jobs/<jobid>/plan
  • /jobs/<jobid>/jobmanager/config
  • /jobs/<jobid>/jobmanager/environment
  • /jobs/<jobid>/jobmanager/log-url
  • /jobs/<jobid>/taskmanagers/<taskmanagerid>/log-url

더 알아보기 (Learn more)