클러스터 모드 개요를 읽었 지만 Spark Standalone 클러스터 의 여러 프로세스 와 병렬 처리를 여전히 이해할 수 없습니다 .
작업자가 JVM 프로세스입니까? 나는을 실행하고 bin\start-slave.sh
실제로 JVM 인 작업자를 생성했다는 것을 알았습니다.
위 링크에 따라 실행 프로그램은 작업을 실행하는 작업자 노드의 응용 프로그램에 대해 시작된 프로세스입니다. 집행자는 또한 JVM입니다.
이것들은 나의 질문입니다 :
집행자는 응용 프로그램마다 있습니다. 그렇다면 노동자의 역할은 무엇입니까? 실행기와 협조하여 결과를 운전자에게 다시 전달합니까? 아니면 운전자가 직접 유언 집행 인과 대화합니까? 그렇다면 근로자의 목적은 무엇입니까?
응용 프로그램의 실행 프로그램 수를 제어하는 방법은 무엇입니까?
실행 프로그램 내에서 작업을 병렬로 실행할 수 있습니까? 그렇다면 실행기의 스레드 수를 구성하는 방법은 무엇입니까?
작업자, 집행자 및 집행자 코어 (--total-executor-cores)의 관계는 무엇입니까?
노드 당 더 많은 작업자가 있다는 것은 무엇을 의미합니까?
업데이트
더 잘 이해하기 위해 예를 들어 봅시다.
예 1 : 기본 설정으로 응용 프로그램을 시작할 때 작업자 노드가 5 개인 독립형 클러스터 (각 노드에 코어가 8 개임)
예 2 예 1과 동일한 클러스터 구성이지만 다음 설정 --executor-cores 10 --total-executor-cores 10으로 응용 프로그램을 실행합니다.
예 3 예 1과 동일한 클러스터 구성이지만 다음 설정 --executor-cores 10 --total-executor-cores 50으로 응용 프로그램을 실행합니다.
예 4 예 1과 동일한 클러스터 구성이지만 다음 설정 --executor-cores 50 --total-executor-cores 50으로 응용 프로그램을 실행합니다.
예제 5 예제 1과 동일한 클러스터 구성이지만 다음 설정 --executor-cores 50 --total-executor-cores 10으로 애플리케이션을 실행합니다.
이러한 각 예에서 얼마나 많은 유언 집행 인이 있습니까? executor 당 몇 개의 스레드가 있습니까? 코어는 몇 개입니까? 응용 프로그램 당 실행자 수는 어떻게 결정됩니까? 항상 노동자 수와 동일합니까?