18.1 모니터링 범위
- 스파크 잡에 오류가 발생했다면, 어디에서 발생했는지 파악하기 위해 스파크 잡을 모니터링 해야 한다.
- 실제 모니터링 대상과 모니터링에 필요한 옵션을 알아야 한다.
<모니터링 대상 컴포넌트>
-스파크 애플리케이션과 잡
: 스파크 애플리케이션과 잡을 모니터링해서 클러스터에서 사용자 애플리케이션이 실행되는 상황을 파악하거나 디버깅
: 스파크 UI와 스파크 로그는 실행 중인 애플리케이션의 RDD와 쿼리 실행 계획 같은 개념적 수준의 정보를 제공
-JVM
: 스파크는 모든 익스큐터를 개별 JVM에서 실행한다.
따라서 코드가 실행되는 과정을 이해하기 위해 각 가상 머신을 모니터링해야 한다.
18.2 모니터링 대상
- CPU, 메모리 사용률 등의 실행 중인 사용자 애플리케이션의 프로세스
- 프로세스 내부에서의 쿼리 실행 과정 (예: job, tasks)
18.2.1 드라이버와 익스큐터 프로세스
- 드라이버에는 모든 애플리케이션의 상태가 보관되어 있고, 안정적으로 실행 중인지 확인할 수 있다.
-만약 한 대의 머신이나 단일 JVM을 모니터링해야 한다면 드라이버를 모니터링해야 한다.
-스파크는 수월한 모니터링을 지원하기 위해 드롭위자드 메트릭 라이브러리 기반의 메트릭 시스템을 갖추고 있다.
18.3 스파크 로그
- 스파크를 가장 상세하게 모니터링하는 방법 중 하나는 로그 파일을 살펴보는 것이다.
- 로깅 프레임워크를 통해서 스파크 로그와 사용자 애플리케이션 로그를 모두 확인할 수 있다.
- 파이썬은 스파크의 자바 기반 로깅 라이브러리를 사용할 수 없어서 파이썬의 logging 모듈 또는 print 구문을 사용
- 일반적으로 스파크 로그는 클러스터 매니저의 웹 UI로 로그를 조회할 수 있다.
18.4 스파크 UI
- 스파크 UI는 실행 중인 애플리케이션과 스파크 워크로드에 대한 평가지표를 모니터링할 수 있는 화면을 제공한다.
- 스파크를 로컬 모드로 실행하면 스파크 애플리케이션의 웹 UI는 http://localhost:4040에 접속해서 볼 수 있다.
- 스파크 UI에서 사용 가능한 모든 탭으로 모니터링하려는 항목에 접근할 수 있다.
- Jobs: 스파크 잡에 대한 정보를 제공
- Stages: 개별 스테이지와 관련된 정보를 제공
- Storage: 스파크 애플리케이션에 캐싱된 정보와 데이터 정보를 제공
- Environment: 스파크 애플리케이션의 구성과 설정 관련 정보를 제공
- Executors: 애플리케이션에서 사용 중인 익스큐터의 상세 정보를 제공
- SQL: SQL과 DataFrame을 포함한 구조적 API 쿼리 정보를 제공
파란색 상자는 스파크 태스크의 스테이지를 나타낸다.
-> 위에 WholeStateCodegen으로 표시된 box는 CSV 파일을 모두 스캔하는 스테이지를 나타낸다.
-> 아래 Exchange box는 파티션 재분배로 인해 발생하는 셔플 스테이지를 나타낸다.
-> 원본 데이터셋이 두 개의 파티션으로 분할된다.
-> 이번 단계에서는 프로젝션(컬럼 선택/추가/필터링)과 집계를 수행한다.
-> 스파크는 최종 단계를 위한 준비 작업으로 데이터를 셔플하기 전에 파티션별로 집계를 수행한다.
-> 파티션별 집계 결과 수와 파티션 수를 곱해서 로우 수를 계산할 수 있다.
-> 마지막 스테이지는 이전 스테이지의 결과에 대한 집계를 수행
- 스파크 잡의 실행 과정을 알아보기 위해 Jobs 탭에서 2번 잡을 클릭한다.
- SQL 탭에서 본 것처럼 3개의 스테이지로 나뉘어 있다.
- 각 스테이지를 클릭해서 더 상세한 정보를 확인할 수 있다.
- 상단 Summary Metrics 부분에서는 다양한 메트릭에 관한 요약 통계를 제공한다.
Storage 탭
-클러스터에 캐시된 RDD나 DataFrame과 관련된 정보를 제공하며 시간이 지나 캐시 된 데이터가 사라졌는지 확인
Environment 탭
- 클러스터에 설정된 다양한 스파크 속성뿐만 아니라 스칼라나 자바와 관련된 정보 등 런타임 환경 관련 정보를 제공
18.4.1 스파크 REST API
- 스파크 UI 외에도 REST API로 스파크의 상태와 메트릭을 확인할 수 있다.
- REST API의 주소는 http://localhost:404/api/v1이다.
- 스파크에서 제공하는 시각화 및 모니터링 도구는 REST API를 기반으로 만들어졌다.
- REST API는 SQL 관련 정보는 제공하지 않는다.
- 만약 스파크 UI에서 볼 수 있는 정보를 기반으로 사용자 정의 리포트 솔루션을 구축하려면 REST API를 사용해야 한다.
18.4.2 스파크 UI 히스토리 서버
- 스파크 히스토리 서버를 이용해서 정상적으로 종료되거나 비정상적으로 종료된 애플리케이션의 정보를 확인한다.
- 스파크 히스토리 서버를 사용하려면 특정 경로에 이벤트 로그를 저장하도록 스파크 애플리케이션을 설정해야 한다.
- 스파크 히스토리 서버는 저장된 이벤트 로그를 기반으로 웹 UI를 자동으로 재구성한다.
18.5 디버깅 및 스파크 응급 처치 -> 다음 게시물에서
'Spark' 카테고리의 다른 글
[스파크] chap1, chap2 아파치 스파크 (0) | 2021.08.09 |
---|---|
[스파크] chap3. 스파크 기능 둘러보기 (0) | 2021.08.03 |
[파이썬]Fatal Python error: initfsencoding: unable to load the file system codec 에러 (0) | 2021.08.03 |