[HADOOP] 스파크가 더 이상 사용하지 않을 것임을 깨달을 때 RDD 자체를 unpersist할까요?
HADOOP스파크가 더 이상 사용하지 않을 것임을 깨달을 때 RDD 자체를 unpersist할까요?
RDD를 여러 번 사용하려면 RDD를 메모리 및 / 또는 디스크에 보관할 수 있습니다. 그러나 나중에 자체적으로 unpersistate해야합니까, 아니면 Spark이 더 이상 가비지 콜렉션을 수행하고 더 이상 필요하지 않을 때 RDD를 unpersist합니까? 필자는 삐걱 거리지 않는 기능을 직접 호출하면 성능이 저하된다는 것을 알게되었습니다.
해결법
-
==============================
1.예, Apache Spark은 가비지 수집시 RDD를 unpersist합니다.
예, Apache Spark은 가비지 수집시 RDD를 unpersist합니다.
RDD.persist에서 다음을 볼 수 있습니다.
sc.cleaner.foreach(_.registerRDDForCleanup(this))
이렇게하면 RDD가 가비지 수집 될 때 ContextCleaner.doCleanupRDD로 이어지는 ReferenceQueue의 RDD에 WeakReference가 삽입됩니다. 거기:
sc.unpersistRDD(rddId, blocking)
더 많은 컨텍스트를 보려면 일반적으로 ContextCleaner를 참조하고 추가 한 커밋을 참조하십시오.
사용하지 않는 RDD의 가비지 수집에 의존 할 때 알아야 할 몇 가지 사항은 다음과 같습니다.
-
==============================
2.@Daniel이 지적한 바와 같이 Spark는 캐시에서 파티션을 제거합니다. 이것은 더 이상 사용할 수있는 메모리가 없으면 발생하며 가장 최근에 사용 된 알고리즘을 사용하여 완료됩니다. @eliasah가 지적한 똑똑한 시스템은 아닙니다.
@Daniel이 지적한 바와 같이 Spark는 캐시에서 파티션을 제거합니다. 이것은 더 이상 사용할 수있는 메모리가 없으면 발생하며 가장 최근에 사용 된 알고리즘을 사용하여 완료됩니다. @eliasah가 지적한 똑똑한 시스템은 아닙니다.
너무 많은 객체를 캐싱하지 않는다면 걱정할 필요가 없습니다. 객체를 너무 많이 캐시하면 JVM 수집 시간이 지나치게 길어 지므로이 경우에는 그것을 unpersist하는 것이 좋습니다.
from https://stackoverflow.com/questions/32636822/would-spark-unpersist-the-rdd-itself-when-it-realizes-it-wont-be-used-anymore by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Windows 구축 / 설치 오류 Hadoop (0) | 2019.06.01 |
---|---|
[HADOOP] hadoop에서 jar 파일을 실행하는 방법? (0) | 2019.06.01 |
[HADOOP] 감속기의 기본 개수 (0) | 2019.06.01 |
[HADOOP] Hadoop 입력에 가장 적합한 분할 가능 압축 = bz2? (0) | 2019.06.01 |
[HADOOP] YARN에서 스파크의 로그는 어디에 있습니까? (0) | 2019.06.01 |