내가 알기로이 응용 프로그램은 클러스터에서 당신에게 5 개 코어를 줄 수 원사의 완벽한 상황입니다 (4 개 집행자 코어와 1 드라이버 코어)
5 개 코어를 차지해야한다는 것입니다 관리하는 CPU
하지만 RM과 스파크 UI에서는이 점을 관찰하지 않습니다.
자주 발생하는 것이 아니기 때문에 YARN에서 얻을 수있는 코어 수가 많아서 Spark 응용 프로그램을 시작할 수 있습니다.
스파크는 요청 된 코어를 무기한 기다릴 수는 있지만 항상 좋아하는 것은 아닙니다. 원사에 스파크가 추가 검사 (일명 minRegisteredRatio
) 즉 응용 프로그램이 작업을 실행을 시작하기 전에 코어 요청 80 %의 최소의를 가지고 왜
. 비율을 제어하려면 spark.scheduler.minRegisteredResourcesRatio
Spark 속성을 사용할 수 있습니다. 그러면 요청한 것보다 적은 코어를 사용하는 이유가 설명됩니다. the official Spark documentation (강조 광산) 인용
:
spark.scheduler.minRegisteredResourcesRatio YARN 모드
0.8는
등록 자원의 최소 비율 (등록 자원/총 예상 리소스) (리소스는 실 모드의 집행자, 독립 실행 형 모드의 CPU 코어 및 Mesos의 coarsed-grained 모드 [ 'spark.cores.max'값 e는 Mesos의 거친 입자 모드에 대해 예상되는 총 자원 임))가 스케줄링이 시작되기 전에 대기해야합니다. 0.0에서 1 사이의 double로 지정됩니다.0. 자원의 최소 비율에 도달했는지 여부에 관계없이 스케줄링이 시작되기까지 대기하는 최대 시간은 config spark.scheduler.maxRegisteredResourcesWaitingTime
에 의해 제어됩니다.
나는 [this] (https://stackoverflow.com/a/28808269/1407161) 답변을 읽어서 spark의 클러스터 모드가 작동하는 방법을 제안합니다. 또한 [여기] (https://spark.apache.org/docs/latest/cluster-overview.html)는 클러스터 모드와 관련된 공식 문서에 대한 링크입니다. 이 둘을 모두 읽으면 아키텍처에 대한 더 나은 이해를 얻을 수 있습니다. – Jeremy
메모리는 어떻습니까? 얼마를 청구 했습니까? –
이것은 YARN 구성에 따라 다릅니다. SPARK-6050에는 그것에 대해 많은 논의가 있습니다. – vanza