3

ref 말한다 각 점화 동작에 대한 모든 파티션의 직렬화 결과 총 크기spark.driver.maxResultSize 란 무엇입니까?

제한 (예를 들어 수집). 최소 1M 이상이어야합니다 ( 은 무제한). 전체 크기가이 제한을 초과하면 작업이 중단됩니다. 한계가 높으면 드라이버에 메모리 부족 오류가 발생할 수 있습니다 (spark.driver.memory의 및 JVM의 객체에 대한 메모리 오버 헤드에 따라 다름). 에 적절한 제한을 설정하면 메모리 부족 오류로부터 드라이버를 보호 할 수 있습니다.

이 속성은 정확히 무엇을합니까? 처음에는 (메모리 부족으로 인해 실패한 직업과 싸우지 않기 때문에) 나는 그것을 늘려야한다고 생각했습니다.

두 번째로 생각해 보면이 속성은 작업자가 드라이버에 보낼 수있는 결과의 최대 크기를 정의하는 것으로 보이므로 기본값 (1G)으로두면 드라이버를 보호하는 가장 좋은 방법이됩니다.

하지만이 경우 작업자가 더 많은 메시지를 보내야하므로 오버 헤드는 작업이 느려지는 것일뿐입니다.


나는 노동자가 (무제한 spark.driver.maxResultSize로 대신 1) 4 메시지를 보낼 원인, 다음 spark.driver.maxResultSize=1G을 갖는 근로자가 드라이버에 데이터의 4G를 보내려고한다는 것입니다 가정, 제대로 이해하고

. 그렇다면, 내 운전자가 사에서 암살 당하지 않도록하기 위해 그 속성을 증가시키는 것은 잘못되었습니다.

그러나 여전히 위의 질문이 남아 있습니다. 1M을 설정하면 가장 방역하는 방법일까요?

답변

5

(spark.driver.maxResultSize 무제한으로 대신 1) 4 메시지를 보낼 수 있도록 작업자를 야기 작업자는 다음 spark.driver.maxResultSize = 1G를 갖는 운전자에 4G 데이터를 전송하고 싶어한다고 가정 .

아니요. 데이터의 예상 크기가 maxResultSize보다 큰 경우 주어진 작업이 중단됩니다. 여기서 목표는 드라이버 손실로부터 애플리케이션을 보호하는 것입니다.

최소 1M으로 설정하면 가장 안전한 접근 방법이 될까요?

실제로 의미는 틀림 있지만 실제로는 유용하지 않습니다. 좋은 값은 응용 프로그램이 정상적으로 진행될 수 있도록하지만 예상치 못한 상황에서 응용 프로그램을 보호해야합니다.