작업자, 작업자 인스턴스 및 실행자 간의 관계는 무엇입니까?
에서 스파크 독립 모드 , 마스터와 노동자 노드가 있습니다.
다음은 몇 가지 질문입니다.
- 2 개의 작업자 인스턴스는 2 개의 작업자 프로세스가있는 하나의 작업자 노드를 의미합니까?
- 모든 작업자 인스턴스가 특정 애플리케이션 (스토리지, 태스크 관리)에 대한 실행기를 보유합니까 아니면 하나의 작업자 노드가 하나의 실행기를 보유합니까?
- 단어 수와 같은 런타임 스파크 방법을 설명하는 순서도가 있습니까?
먼저 Spark 클러스터 문서를 읽는 것이 좋지만 이 모드를 설명하는 이 Cloudera 블로그 게시물을 더 많이 읽으십시오 .
첫 번째 질문은 '인스턴스'가 의미하는 바에 따라 다릅니다. 노드는 머신이며 머신 당 둘 이상의 작업자를 실행해야하는 이유가 없습니다. 따라서 두 개의 작업자 노드는 일반적으로 각각 Spark 작업자 인 두 대의 머신을 의미합니다.
작업자는 많은 애플리케이션에 대해 많은 실행자를 보유합니다. 하나의 애플리케이션에는 많은 작업자에 대한 실행자가 있습니다.
세 번째 질문은 명확하지 않습니다.
다른 훌륭한 답변으로 확장하여 몇 가지 이미지로 설명하고 싶습니다.
Spark Standalone 모드에는 마스터 노드와 작업자 노드가 있습니다.
독립형 모드를 위해 한곳에서 마스터와 워커를 모두 나타내는 경우.
Spark가 YARN과 어떻게 작동하는지 궁금 하신가요? 이 게시물 확인 원사에 스파크를
1. 2 개의 작업자 인스턴스는 2 개의 작업자 프로세스가있는 하나의 작업자 노드를 의미합니까?
일반적으로 작업자 인스턴스는 spark tasks / jobs를 실행하는 프로세스 이므로 슬레이브라고 부릅니다 . 노드 (물리적 또는 가상 머신) 및 작업자에 대해 제안 된 매핑은 다음과 같습니다.
1 Node = 1 Worker process
2. 모든 작업자 인스턴스가 특정 애플리케이션 (스토리지, 작업 관리)에 대한 실행기를 보유합니까? 아니면 하나의 작업자 노드에 하나의 실행기가 있습니까?
예, 작업자 노드는 CPU, 메모리 및 스토리지가 충분한 경우 여러 실행기 (프로세스)를 보유 할 수 있습니다 .
주어진 이미지에서 작업자 노드를 확인하십시오.
BTW, 주어진 시점에서 작업자 노드의 실행기 수 는 전적으로 클러스터의 작업로드 및 실행기를 실행하는 노드의 기능 에 따라 다릅니다 .
3. 실행 시간을 어떻게 스파크하는지 설명하는 흐름도가 있습니까?
If we look the execution from Spark prospective over any resource manager for a program, which join
two rdd
s and do some reduce
operation then filter
HIH
I know this is an old question and Sean's answer was excellent. My writeup is about the SPARK_WORKER_INSTANCES in MrQuestion's comment. If you use Mesos or YARN as your cluster manager, you are able to run multiple executors on the same machine with one worker, thus there is really no need to run multiple workers per machine. However, if you use standalone cluster manager, currently it still only allows one executor per worker process on each physical machine. Thus in case you have a super large machine and would like to run multiple exectuors on it, you have to start more than 1 worker process. That's what SPARK_WORKER_INSTANCES in the spark-env.sh is for. The default value is 1. If you do use this setting, make sure you set SPARK_WORKER_CORES 작업 자당 코어를 명시 적으로 제한하지 않으면 각 작업자가 모든 코어를 사용하려고합니다.
이 독립형 클러스터 관리자 제한은 곧 사라질 것입니다. 이 SPARK-1706 에 따르면 이 문제는 Spark 1.4에서 수정 및 릴리스됩니다.
Lan이 말했듯이 다중 작업자 인스턴스 사용은 독립형 모드에서만 관련이 있습니다. 여러 인스턴스를 원하는 이유는 두 가지입니다. (1) 가비지 일시 중지 수집기가 대형 JVM의 처리량을 저하시킬 수 있습니다. (2) 32GB를 초과하는 힙 크기는 CompressedOoops를 사용할 수 없습니다.
여러 작업자 인스턴스를 설정하는 방법에 대해 자세히 알아보세요 .
'program story' 카테고리의 다른 글
생성자 주입이 다른 옵션보다 나은 이유 설명 (0) | 2020.11.24 |
---|---|
Elixir에서 셸 명령 실행 (0) | 2020.11.24 |
"커밋 실패 오류 : pathspec… 파일과 일치하지 않음"메시지가 나타나는 이유는 무엇입니까? (0) | 2020.11.24 |
redux에서 상수의 요점은 무엇입니까? (0) | 2020.11.24 |
spring.jpa.hibernate.ddl-auto 속성은 Spring에서 정확히 어떻게 작동합니까? (0) | 2020.11.24 |