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.dir와 historyserver.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-pattern과 historyserver.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>/exceptions는 http://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