2017-10-28 4 views
0

Spark에서 파티션을 이해하고 싶습니다. 필자는 Windows 10에서 로컬 모드로 스파크를 실행하고 있습니다. 내 랩톱에는 2 개의 물리적 코어와 4 개의 논리 코어가 있습니다.Spark : 파티션 이해 - 코어

1/용어 : 나에게 스파크의 핵심 = 스레드. 스파크의 핵심은 물리적 인 핵심과 다릅니다. 맞습니까? 스파크 코어는 작업과 관련이 있습니다. 그렇다면 sparksql 데이터 프레임에 4 개의 파티션이있는 경우 파티션에 대한 스레드가 필요하므로 4 개의 스레드가 필요합니까?

2/논리 코어가 4 개인 경우 내 랩톱에서 동시에 4 개의 동시 스레드를 실행할 수 있다는 의미입니까? 그래서 스파크 4?

3/파티션 수 설정 : 데이터 프레임의 파티션 수를 선택하여 추가 변환 및 작업을 가능한 빨리 수행 할 수 있습니까? - 내 노트북에는 4 개의 논리 코어가 있으므로 4 개의 파티션이 있어야합니까? - 실제 코어 또는 논리 코어와 관련된 파티션 수는 얼마입니까? - 스파크 문서에서는 CPU 당 2-3 개의 작업이 필요하다고 기록되었습니다. 파티션의 nb는 4 또는 6과 동등해야합니다 두 개의 물리적 코어가 있기 때문에?

는 (I 파티션의 수는 로컬 모드에 많은 영향을주지 않습니다 알고 있지만 이것은 단지 이해하는 것입니다)는 "스파크 코어"로

답변

0
  1. Theres는 같은 것이. --executor-cores과 같은 옵션을 말하는 경우, 이는 각 실행 프 N 그 %이 동시에 실행될 태스크 수를 나타냄니다.

  2. 동시 작업 수는 원하는대로 설정할 수 있지만 제공하지 않을 논리 코어 수보다 많을 수 있습니다.

  3. 사용할 파티션의 수는 상황에 따라 다릅니다. 데이터 또는 변형을 알지 못하면 번호를 부여하기가 어렵습니다. 일반적인 조언은 총 코어의 배수 바로 아래에서 사용하는 것입니다. 예를 들어, 16 코어가있는 경우, 아마 47, 79, 127 및 16의 배수 이하의 유사한 숫자를 사용하는 것이 좋습니다. 그 이유는 모든 코어가 작동하고 있는지 확인하기 위해서입니다. 가능한 한 짧은 시간에 자원을 유휴 상태로 유지하고 다른 작업이 끝나기를 기다립니다. 그러나 당신은 추측 실행을 허용하기 위해 약간의 여분을 남겨 둡니다 (스파크는 두 번째 시도에서 더 빨리 진행되는지보기 위해 천천히 실행중인 경우 같은 작업을 두 번 실행하기로 결정할 수 있습니다). 수를 따기

은 당신의 작업을 실행하는 방법을 모니터링하는 스파크 작업 서버를 활용하지만 시행 착오의 비트입니다. 많은 레코드가있는 작업이 거의 없다는 것은 각 파티션의 수를 늘려야 함을 의미합니다. 반면에 각각의 레코드가 적은 파티션이 많을 경우이 경우 파티션을 줄여야합니다.

+0

nit : 저는 RDD가있는 Spark의 메인/코어 모듈을 가리키는 "spark core"를 사용합니다. 그것이 나를위한 스파크 코어입니다. –

관련 문제