일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- programmers
- 키바나
- 해시
- 파이썬
- Django
- Spark
- CentOS
- 스파크
- AWS
- Medium
- Optimization
- 리트코드
- kibana
- 장고
- RecommendationSystem
- 알고리즘
- elasticsearch
- dfs
- 깊이우선탐색
- 프로그래머스
- python
- ELK
- twosum
- solution
- Easy
- daspecialty
- 엘라스틱서치
- Algorithm
- leetcode
- dump
- Today
- Total
Archive
[Spark] Spark Web UI 본문
Job, Stage, Task 등 다양한 레벨에서 확인할 수 있고, 실행 계획 및 실제 수행 내역에 대한 Dag Visualizaiton 도 있다.
1. Job / Stage
Job/Stage 각 탭에서는 개별 Task의 Detail (완료 상태, I/O , Duration, Memory Consumption, 실행시간 등)을 살펴볼 수 있는 UI를 제공한다.
① Job > Event Timeline
Executor가 뜨고 죽는 시점을 확인할 수 있고, 아래 표에서 Complete 혹은 Fail 된 잡의 정보를 볼 수 있다. Duration이 유난히 긴 Job에 대해선 조금 더 자세히 (Stage, Task 등) 살펴볼 필요가 있다.
또한 각 Job의 Description을 클릭하면 상세 Job 페이지가 뜨는데 DAG와 Complete Stage 목록 등을 확인할 수 있다.
② Stage
애플리케이션의 모든 Job 의 모든 Stage의 현재 상태에 대한 요약과 각 Stage에 대한 상세 정보(DAG, Task 평균 수행 시간, GC 시간, Shuffle Read 크기 및 Record 개수 등)를 제공한다.
Stage 내에서 각각의 연산은 파란 박스로 표시되며, Task가 여러 개라면 병렬로 실행되는 것을 볼 수 있다.
Stage에서 파악할 수 있는 직관적인 정보는 아래와 같다.
- Executor에서 Shuffle Data를 Read 중이라면, 너무 높은 Shuffle Read Blocked Time이 I/O 이슈의 Signal 일 수도 있다.
- 높은 GC 시간은 Heap Memory에 너무 많은 객체가 있어서 Executor Memory 부족의 원인일 수 있다.
- Max Task Time 이 평균보다 높으면 Partition들 끼리의 균등하지 못한 데이터 분포로 인해 Data Skew가 일어난 것일 수 있다.
2. Executor
Executor 탭에서는 Application에 생성된 Executor들에 대한 정보를 제공한다.
Executor의 상세 자원 사용량 ( Disk, Memory, CPU Core), GC 수행시간, Shuffle 동안 읽고 쓴 데이터 양 등을 확인할 수 있다.
요약된 정보 뿐만 아니라 개별 Executor에서 메모리를 얼마나 쓰는지, 무슨 목적으로 쓰는지 확인할 수 있다.
3. Storage
.cache() 나 .persist()의 결과로 Application에서 캐시 된 DataFrame / Table 정보를 제공한다
RDD Name을 클릭하면 자세한 정보를 볼 수 있는데, Memory와 Disk 상에서 Executor와 Partition이 어떻게 Cache 되어있는지 볼 수 있다.
4. SQL
Spark SQL Query 실행 계획 및 결과를 확인할 수 있다. 쿼리가 언제 어떤 잡에 의해 실행되고 얼마나 걸렸는지 등을 알 수 있다.
위의 Description 내 링크를 클릭하면 모든 Physical Operator들과 함께 상세 Executuion Plan을 보여준다.
Execution Plan의 각 Physical Operator(Scain In Memory / HashAggregate / Exchange 등)의 세부적인 내용과 어떤 일을 했는지 확인할 수 있다. ( Record를 몇 개나 읽었는지, Shuffle로 얼마나 썼는지 등 )
5. Enviornment
현재 Spark Application이 실행되는 환경에 대해 알 수 있다.
Reference
Learning Spark (2nd) - 2. / 7. Optimizing and Tuning Spark Applications
https://spark.apache.org/docs/3.0.2/web-ui.html
https://www.databricks.com/it/blog/2015/06/22/understanding-your-spark-application-through-visualization.html