Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- supserset
- hive
- Python
- OOM
- PFX
- install
- airflow
- Celery
- webhdfs
- Linux
- executor
- Keygen
- pyhive
- encoding
- python3
- distcp
- python2
- kerberosClient
- CRT
- OpenSSL
- setdefault
- ssh
- hadoop
- unquote
- OutOfMemory
- kerberos
- Spark
Archives
- Today
- Total
복싱하는_개발자.dev
[Spark] spark 작업 시 Java OOM(Out Of Memory) ERROR 처리 본문
스파크 작업 도중에 가장 많이 보는 에러라고 하면 단연코 Java GC 관련 에러가 아닐까 싶다...
java.lang.OutOfMemoryError: GC overhead limit exceeded
보통 스파크 내에서 데이터 프레임 작업이 아닌, 해당 데이터 프레임들을 RDD로 변환 시켜서 사용 될 때, 메모리를 너무 많이 사용하게 되면서 발생하는 에러이다.
이 때는 작업이 죽지도 않고, pending 되어 계속 자원을 가지고 있는 경우가 많아서 이후 작업들에도 영향력이 상당하다.
사실 이 에러를 정확하게 처리하기 위해서는 데이터프레임 >> RDD 로 변환되는 작업들을 줄이는 것이 좋지만 로직 상 어쩔 수 없다면
spark-submit 옵션 중 driver-memory를 늘려 주어야 한다.
spark 옵션에는 executor / driver 의 memory, core 를 변경할 수 있는 옵션이 있다.
실질적으로 연산을 수행하는 것은 말 그대로 executor 가 담당한다. executor의 memory, core option이 어느정도 커진다면 스파크 작업의 수행이 빨라질 수 있다. (사용하는 데이터의 크기와 자원을 고려해야한다!)
driver는 SparkContext를 생성하고 RDD를 만들고 트랜스포메이션과 액션을 실행하는 사용자 코드를 실행하는 프로세스이다.
스파크 작업을 돌리는 순간, driver 가 생성된다.
| 스파크 옵션 | 의미 | 기본값 | 가이드라인 |
| spark.driver.memory | 하나의 driver에서 Task를 실행하는 데 사용하는 (가상) 코어 개수 | 1024 mb | 데이터 프레임이 아닌 RDD 변경 하는 작업이 크거나 많은 경우 늘려주는 것이 좋다. 또한 한번에 큰 데이터를 많이 읽는 경우에도 driver-memory의 증가가 필요하다. |
| spark.driver.cores | 하나의 driver 에서 Task를 실행하는 데 사용하는 (가상) 코어 개수 | 1 | |
| spark.executor.memory | 하나의 executor에서 Task를 실행하는 데 사용하는 메모리 크기 | 1024 mb | 큰 데이터프레임끼리의 SQL 작업, 코드 내에서 중간 산출물이 많고, 산출물들을 계속해서 써야하는 경우 memory를 증가시켜야 한다. |
| spark.executor.cores | 하나의 executor에서 Task를 실행하는 데 사용하는 (가상) 코어 개수 | 1 | executor 의 코어수는 5개 전후로 설정 하는것을 추천. |
'Spark' 카테고리의 다른 글
| [ERROR] PickleException: expected zero arguments for construction of ClassDict (for numpy.dtype) (0) | 2022.03.28 |
|---|---|
| [Spark] spark cluster vs client mode (0) | 2022.03.08 |
Comments