2016-09-08 3 views
0

스파크에서, 집행자는 2, 5 또는 6과 같이 많은 작업을 동시에 실행할 수 있습니다.스파크 실행자와 작업 동시성

Spark는 동일한 실행 프로그램에서 동시에 실행할 수있는 작업 수 (즉, 실행 프로그램에서 동시에 실행할 수있는 작업 수)를 어떻게 계산합니까?

실행 프로그램이 하나의 태스크를 실행할 수 있지만 동일한 실행 프로그램에서 동시에 실행되도록 하나 이상의 태스크를 배치 할 수 있습니까? 그 기준은 무엇입니까?

실행자는 고정 된 수의 코어가 있습니다. & 메모리. 우리가 메모리 & 코어 요구 사항을 Spark의 작업에 지정하지 않았기 때문에 실행 프로그램에서 동시 실행 가능한 메모리의 수를 계산하는 방법은 무엇입니까?

+0

멀티 스레딩에 대해 들어 보셨습니까? 스파크 RDD는 변경 불가능하므로 스레드로부터 안전합니다. 이 https://en.wikipedia.org/wiki/Multithreading_(computer_architecture)을 읽어보십시오. 당신이 생각하는 병렬 실제로 멀티 스레드 환경에서 실행되고 –

답변

2

실행 프로그램에서 병렬로 실행되는 작업 수 = 구성된 코어 수입니다. 이 번호는 구성을 통해 언제든지 변경할 수 있습니다. Executor 전체 (병렬 또는 순차)에 의해 실행되는 태스크의 총 수는 생성 된 태스크의 수 (스플릿 수를 통해)와 실행 프로그램의 수를 통해 결정됩니다.

하나의 실행 프로그램에서 실행되는 모든 태스크는 구성된 동일한 메모리를 공유합니다. 내부에서는 코어 수만큼의 스레드가 시작됩니다.

0

가장 큰 문제는 처리중인 RDD의 비뚤어진 파티션 일 수 있습니다. 2-6 파티션에 많은 데이터가있는 경우 네트워크를 통한 데이터 셔플을 줄이기 위해 Spark는 Executor가 자신의 노드에 로컬로 저장된 데이터를 처리하도록 시도합니다. 따라서 2-6 명의 집행자가 오랫동안 일하는 것을 볼 수 있으며 나머지는 몇 밀리 초 안에 데이터로 처리됩니다.

자세한 내용은 this stackoverflow question에서 확인할 수 있습니다.

관련 문제