Spark에는 어떤 클러스터 유형을 선택해야합니까?
저는 Apache Spark를 처음 사용하고 Spark가 세 가지 유형의 클러스터를 지원한다는 것을 방금 배웠습니다.
- 독립형-Spark가 자체 클러스터를 관리함을 의미합니다.
- YARN-Hadoop의 YARN 리소스 관리자 사용
- Mesos-Apache의 전용 리소스 관리자 프로젝트
저는 Spark를 처음 사용하기 때문에 Standalone을 먼저 시도해야한다고 생각합니다 . 그러나 어느 것이 추천되는지 궁금합니다. 앞으로 대규모 클러스터 (수백 개의 인스턴스)를 구축해야하는데 어떤 클러스터 유형으로 이동해야합니까?
나는 Spark에서 일하는 사람들이 가장 대답 할 수 있다고 생각합니다. 그래서 Learning Spark에서
새 배포 인 경우 독립 실행 형 클러스터로 시작합니다. 독립 실행 형 모드는 설정이 가장 쉽고 Spark 만 실행하는 경우 다른 클러스터 관리자와 거의 모든 동일한 기능을 제공합니다.
Spark를 다른 애플리케이션과 함께 실행하거나 더 풍부한 리소스 예약 기능 (예 : 대기열)을 사용하려는 경우 YARN과 Mesos 모두 이러한 기능을 제공합니다. 이 중 YARN은 많은 Hadoop 배포판에 사전 설치 될 것입니다.
YARN 및 독립 실행 형 모드에 비해 Mesos의 한 가지 장점은 세분화 된 공유 옵션으로, Spark 셸과 같은 대화 형 애플리케이션이 명령 간 CPU 할당을 축소 할 수 있도록합니다. 이것은 여러 사용자가 대화 형 셸을 실행하는 환경에서 매력적입니다.
모든 경우에 스토리지에 대한 빠른 액세스를 위해 HDFS와 동일한 노드에서 Spark를 실행하는 것이 가장 좋습니다. Mesos 또는 독립형 클러스터 관리자를 동일한 노드에 수동으로 설치하거나 대부분의 Hadoop 배포에서 이미 YARN과 HDFS를 함께 설치할 수 있습니다.
Spark Standalone Manager : Spark에 포함 된 간단한 클러스터 관리자로 클러스터를 쉽게 설정할 수 있습니다. 기본적으로 각 응용 프로그램은 클러스터에서 사용 가능한 모든 노드를 사용합니다.
Standalone 및 Mesos에 비해 YARN 의 몇 가지 이점 :
YARN은 동적 공유를 허용하고 중앙에서 실행되는 모든 프레임 워크 사이의 클러스터 자원의 동일한 풀 구성 원사를 .
워크로드를 분류, 격리 및 우선 순위 지정하기 위해 YARN 스케줄러 의 모든 기능을 활용할 수 있습니다 .
스파크 독립형 모드는 클러스터의 모든 노드에 대한 집행을 실행하는 각 응용 프로그램이 필요합니다; YARN에서는 사용할 실행기 수를 선택합니다.
YARN 은 귀하의 요청에 따라 랙 및 기계 지역성을 직접 처리하므로 편리합니다.
자원 요청 모델은 이상하게도 Mesos 에서 거꾸로되어 있습니다. 에서 원사 , 당신 (프레임 워크) 지정된 사양 요청 컨테이너 및 지역의 환경을 제공합니다. Mesos에서는 리소스 "제공"을 받고 자신의 일정 정책에 따라이를 수락하거나 거부 할 수 있습니다. Mesos 모델은 틀림없이 더 유연하지만 프레임 워크를 구현하는 사람에게는 더 많은 작업을 수행합니다.
이미 큰 Hadoop 클러스터가있는 경우 YARN 이 더 나은 선택입니다.
독립 매니저는 공유 비밀을 가진 각 노드를 사용자 구성이 필요합니다. Mesos 의 기본 인증 모듈 인 Cyrus SASL은 사용자 정의 모듈로 대체 할 수 있습니다. YARN 에는 인증, 서비스 수준 권한 부여, 웹 콘솔 인증 및 데이터 기밀성을위한 보안이 있습니다. Hadoop 인증은 Kerberos를 사용하여 각 사용자 및 서비스가 Kerberos에 의해 인증되었는지 확인합니다.
- 세 클러스터 관리자 모두에서 고 가용성을 제공하지만 Hadoop YARN 은 별도의 ZooKeeper 장애 조치 컨트롤러를 실행할 필요가 없습니다.
유용한 링크:
스파크 문서 페이지
애질 데이터 기사
독립 실행 형은 스파크 전용 워크로드가있는 경우에만 사용해야한다고 언급 한 것처럼 매우 명확합니다.
yarn과 mesos 사이에서 고려해야 할 한 가지는 mapreduce와 달리 spark job은 실행자를 잡아서 작업의 전체 수명 동안 유지한다는 사실입니다. mapreduce에서 작업이 평생 동안 매퍼와 감속기를 가져오고 해제 할 수 있습니다.
작업 수명 동안 처음에 얻은 모든 리소스를 완전히 활용하지 못하는 장시간 실행 스파크 작업이있는 경우 해당 리소스를 다른 앱과 공유하고 Mesos 또는 Spark 동적 스케줄링을 통해서만 수행 할 수 있습니다. . https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications 따라서 yarn을 사용하면 Spark에 대한 동적 할당을 사용하는 유일한 방법은 Spark에서 제공하는 동적 할당을 사용하는 것입니다. Yarn은 Mesos가 방해하지 않을 것입니다. 다시 말하지만,이 전체 요점은 오랫동안 실행되는 Spark 응용 프로그램이 있고 동적으로 확장 및 축소하려는 경우에만 중요합니다.
Mesos는보다 정교한 스케줄링 설계를 통해 Spark와 같은 애플리케이션이 협상 할 수 있도록합니다. 오늘날의 다양한 애플리케이션에 더 적합합니다. 이 사이트는 정말 통찰력이 있습니다.
https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn
"... YARN은 역사적으로 (그리고 여전히 일반적으로) 실행 시간이 긴 일괄 작업 인 Hadoop 작업을 예약하는 데 최적화되어 있습니다. 즉, YARN은 장기 실행 서비스 나 단기 대화 형 쿼리 (예 : 소규모 다른 종류의 워크로드를 예약 할 수는 있지만 이상적인 모델은 아닙니다. MapReduce의 리소스 요구 사항, 실행 모델 및 아키텍처 요구 사항은 장기 실행 서비스의 요구 사항과 매우 다릅니다. 웹 서버 나 SOA 애플리케이션 또는 Spark 나 Storm과 같은 실시간 워크로드로 ... "
참고 URL : https://stackoverflow.com/questions/28664834/which-cluster-type-should-i-choose-for-spark
'code' 카테고리의 다른 글
Angular에서 'pathmatch : full'은 무엇이며 어떤 효과가 있습니까? (0) | 2020.11.01 |
---|---|
C ++에서 const char *에 const char을 할당 할 수있는 이유는 무엇입니까?! (0) | 2020.11.01 |
@ 1x, @ 2x 및 @ 3x iOS 이미지가 필요한 이유는 무엇입니까? (0) | 2020.11.01 |
반응에서 얕은 비교는 어떻게 작동합니까? (0) | 2020.11.01 |
.NET Core 프로젝트를 가져와 NuGet 참조를 복사하여 출력을 빌드하는 방법은 무엇입니까? (0) | 2020.11.01 |