이 문서에서는 관련된 구성 요소를 보다 쉽게 이해할 수 있도록 클러스터에서 스파크가 실행되는 방법에 대한 간략한 개요를 제공합니다. 응용 프로그램 제출 지침을 읽어 클러스터에서 응용 프로그램을 시작하는 방법에 대해 알아봅니다.
스파크 응용 프로그램은 클러스터에서 독립적인 프로세스 집합으로 실행되며 주 프로그램(드라이버 프로그램이라고 함)의SparkContext
개체에 의해 조정됩니다.
특히,클러스터에서 실행하기 위해 스파크 컨텍스트는 여러 유형의 클러스터 관리자(스파크의 자체 독립형 클러스터 관리자,메소 또는 원사)에 연결할 수 있습니다. 연결되면 스파크는 클러스터의 노드에서 실행 프로그램을 획득합니다.다음으로 응용 프로그램 코드(스파크 콘텍스트에 전달 된 항아리 또는 파이썬 파일로 정의)를 실행자에게 보냅니다. 마지막으로,스파크 콘텍스트는 실행할 실행자에게 작업을 보냅니다.
이 아키텍처에는 몇 가지 유용한 사항이 있습니다:
- 각 응용 프로그램은 전체 응용 프로그램의 기간 동안 유지 하 고 여러 스레드에서 작업을 실행 하는 자체 실행 프로그램 프로세스를 가져옵니다. 따라서 스케줄링 측(각 드라이버는 자체 작업을 예약)과 실행 측(다른 응용 프로그램의 작업이 다른 응용 프로그램에서 실행됨)모두에서 응용 프로그램을 서로 격리하는 이점이 있습니다. 그러나 이는 또한 데이터를 외부 저장소 시스템에 쓰지 않고 다른 스파크 응용 프로그램(스파크 컨텍스트 인스턴스)에서 공유 할 수 없음을 의미합니다.
- 스파크는 기본 클러스터 관리자와 무관합니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.
- 드라이버 프로그램은 평생 동안 실행자로부터 들어오는 연결을 수신하고 수락해야합니다(예:스파크 참조).드라이버.네트워크 구성 섹션의 포트). 따라서 드라이버 프로그램은 작업자 노드에서 네트워크 주소를 지정해야 합니다.
- 드라이버는 클러스터에서 작업을 예약하기 때문에 동일한 로컬 영역 네트워크에서 작업 노드 가까이에서 실행해야 합니다. 원격 클러스터에 요청을 보내려면 작업자 노드에서 멀리 떨어진 곳에서 드라이버를 실행하는 것보다 드라이버에 원격 서버를 열고 근처에서 작업을 제출하는 것이 좋습니다.
클러스터 관리자 유형
이 시스템은 현재 여러 클러스터 관리자를 지원합니다:
- 독립형-클러스터를 쉽게 설정할 수있는 스파크와 함께 간단한 클러스터 관리자가 포함되어 있습니다.
- 아파치 메소-또한 하둡 맵리 듀스 및 서비스 응용 프로그램을 실행할 수있는 일반 클러스터 관리자.
- 하둡 원사–하둡 2 의 리소스 관리자.
- 쿠버네티스-컨테이너화된 애플리케이션의 배포,스케일링 및 관리를 자동화하기 위한 오픈 소스 시스템.
타사 프로젝트(스파크 프로젝트에 의해 지원 되지 않음)클러스터 관리자로 서에 대 한 지원을 추가 하기 위해 존재 합니다.
신청서 제출
신청서는spark-submit
스크립트를 사용하여 모든 유형의 클러스터에 제출할 수 있습니다.응용 프로그램 제출 가이드는이 작업을 수행하는 방법을 설명합니다.
모니터링
각 드라이버 프로그램에는 실행 작업,실행 프로그램 및 저장소 사용에 대한 정보가 표시되는 웹 사용자 인터페이스가 있습니다. 웹 브라우저에서로 이동하여 이 사용자 인터페이스에 액세스합니다. 모니터링 가이드는 다른 모니터링 옵션에 대해서도 설명합니다.
작업 예약
스파크는 응용 프로그램 간(클러스터 관리자 수준)과 응용 프로그램 내(동일한 스파크 컨텍스트에서 여러 계산이 발생하는 경우)에서 리소스 할당을 제어합니다.작업 스케줄링 개요에서는 이에 대해 자세히 설명합니다.
용어집
다음 표에는 클러스터 개념을 참조하는 데 사용되는 용어가 요약되어 있습니다:
용어 | 의미 |
---|---|
응용 프로그램 | 스파크에 내장 된 사용자 프로그램. 클러스터의 드라이버 프로그램 및 실행 프로그램으로 구성됩니다. |
응용 프로그램 항아리 | 사용자의 스파크 응용 프로그램을 포함하는 항아리. 어떤 경우에는 사용자가 종속성과 함께 자신의 응용 프로그램을 포함하는”동네 짱 항아리”를 만드는 것이 좋습니다. 사용자의 항아리는 하둡 또는 스파크 라이브러리를 포함해서는 안되지만 런타임에 추가됩니다. |
드라이버 프로그램 | 응용 프로그램의 기본()기능을 실행하고 스파크 콘텍스트를 만드는 프로세스 |
클러스터 관리자 | 클러스터에서 리소스를 확보하기 위한 외부 서비스(예:독립 실행형 관리자,메소,원사) |
배포 모드 | 드라이버 프로세스가 실행되는 위치를 구분합니다. “클러스터”모드에서 프레임워크는 클러스터 내부의 드라이버를 시작합니다. “클라이언트”모드에서 제출자는 클러스터 외부에서 드라이버를 시작합니다. |
작업자 노드 | 클러스터에서 응용 프로그램 코드를 실행할 수 있는 노드 |
실행기 | 작업자 노드의 응용 프로그램에 대해 시작된 프로세스로 작업을 실행하고 데이터를 메모리 또는 디스크 저장소에 보관합니다. 각 응용 프로그램에는 자체 실행 프로그램이 있습니다. |
작업 | 한 명의 실행자에게 전송될 작업 단위 |
작업 | 스파크 동작에 대한 응답으로 생성되는 여러 작업으로 구성된 병렬 계산(예:save ,collect ); 이 용어는 드라이버 로그에 사용됩니다. |
단계 | 각 작업은 서로 의존하는 단계라는 작은 작업 집합으로 나뉩니다(맵리 듀스의 맵 및 축소 단계와 유사). |