2017-03-21 4 views
1

작업 실패의 경우 지속 된 RDD (StorageLevel.MEMORY_ONLY_SER)를 실행 취소하고 작업을 처음부터 다시 시도 할 때 다시 계산합니다. 또는 캐시 된 RDD가 추가됩니다.스파크 노드에서 지속되는 RDD 데이터 지우기

지속 된 RDD에 대한 작업 실패의 경우 중복 기록이 표시됩니다. 어떤 도움을 주시면 감사하겠습니다.

+0

Spark는 작업 실패로 인해 캐시 된 RDD가 메모리에없는 경우 이상적으로 RDD를 다시 계산합니다. DAG를 확인하거나 이전 단계에 누적기를 넣음으로써 이것이 일어나고 있는지 확인할 수 있습니다. DAG를 다시 처리하여 RDD를 계산하면 카운터가 2 배가됩니다. 그렇지 않으면 x가됩니다. –

+0

문제를 자세히 설명해 주시겠습니까? "영구 RDD에 대한 작업 실패의 경우 중복 기록이 표시됩니다." –

답변

0

작업은 RDD 파티션을 계산하기 위해 실행되는 가장 작은 개별 실행 단위입니다. 작업이 실패 할 경우 실행 메서드는 TaskContextImpl에 작업 실패를 알립니다 .Run은 MemoryStore가이 작업 (ON_HEAP 및 OFF_HEAP 메모리 모드 모두)에 대한 언롤 메모리를 해제하도록 요청하고 ContextCleaner는 응용 프로그램 전체의 정리를 담당하는 Spark 서비스입니다

우리가 알고있는 것처럼 RDD는 탄력성이 있습니다. 즉, RDD 계보 그래프 덕분에 내결함성이 있으며 노드 장애로 인해 누락되었거나 손상된 파티션을 재 계산할 수 있습니다.

캐싱은 계보를 추적하면서 메모리에서 RDD를 계산하고 구체화합니다 (종속성). 캐싱이 RDD의 계보를 기억 한 후에 Spark는 노드 오류시 손실 파티션을 재 계산할 수 있습니다. 마지막으로 캐시 된 RDD는 실행중인 응용 프로그램의 컨텍스트에서 실행되고 응용 프로그램이 종료되면 캐시 된 RDD도 삭제됩니다. Spark의 캐시는 내결함성이 있습니다. RDD의 파티션이 손실되면 원래 만든 변환을 사용하여 자동으로 다시 계산됩니다.

RDD가 메모리에 지속되면 태스크 실패 executor JVM 프로세스도 실패하므로 메모리가 해제됩니다. RDD는 작업에 다음 디스크에 지속 경우

rdd.unpersist() 

가 캐시 RDD을 취소 호출 할 수 있습니다 스파크 종료 후크 그냥 임시 파일

0

를 쳐 실패합니다.