저렴한 비용으로 서버리스 K8s 클러스터에서 Spark 데이터 계산을 실행하는 방법은 무엇입니까?

머리 picture.jpg

작성자 | Liu Mi Alibaba Alibaba Cloud Intelligence
이 기사는 "서버리스 기술 오픈 코스" 에서 발췌 한 것입니다.

소개 :이 강의에서는 주로 서버리스 Kubernetes 클러스터에서 저렴한 비용으로 Spark 데이터 계산을 실행하는 방법을 소개합니다. 먼저 Alibaba Cloud Serverless Kubernetes 및 Elastic Container Instance ECI의 두 제품을 간단히 소개 한 다음 Kubernetes에서 Spark를 소개하고 마지막으로 실제 데모를 수행합니다.

제품 설명

Alibaba Cloud 탄력적 컨테이너 인스턴스 ECI

ECI는 안전한 서버리스 컨테이너 운영 서비스를 제공합니다. 기본 서버를 관리 할 필요가 없습니다. 컨테이너를 실행하기 위해 패키지화 된 Docker 이미지를 제공하고 컨테이너의 실제 작업에 사용 된 리소스에 대해서만 비용을 지불하면됩니다.

1. PNG

Alibaba Cloud Container Service 제품군

2.PNG

호스팅 된 Kubernetes (ACK) 버전이든 서버리스 버전의 Kubernetes (ASK)이든 ECI는 컨테이너 리소스 계층으로 사용할 수 있습니다. 그 뒤의 구현은 가상 노드 기술을 사용하여 가상 노드라는 가상 노드를 통해 ECI에 연결하는 것입니다.

3.PNG

Kubernetes + ECI

Virtual Kubelet을 사용하면 표준 Kubernetes 클러스터가 ECS와 가상 노드를 혼합하고 가상 노드를 버스트 트래픽을위한 탄력적 리소스 풀로 사용할 수 있습니다.

4.PNG

ASK (서버리스 Kubernetes) + ECI

서버리스 클러스터에는 ECS 작업자 노드가 없으며 리소스를 예약하거나 계획 할 필요가 없습니다. 가상 노드는 하나뿐입니다. 모든 포드는 ECI 인스턴스를 기반으로하는 가상 노드에 생성됩니다.

5.PNG

서버리스 Kubernetes는 컨테이너 및 Kubernetes를 기반으로하는 서버리스 서비스입니다. 간단하고 사용하기 쉬우 며 매우 유연하며 최적의 비용과 종량제 Kubernetes 컨테이너 서비스를 제공합니다. 노드 관리, 운영 및 유지 관리가 필요하지 않으며 용량 계획이 없습니다. 사용자는 인프라 관리보다 애플리케이션에 더 많은 관심을 기울입니다.

Spark는 주지사에 있습니다.

Spark는 2.3.0부터 Standalone, YARN 및 Mesos 이외의 새로운 배포 방법을 실험적으로 지원했습니다 . Kubernetes에서 Spark 실행 이제 지원이 매우 성숙해졌습니다.

Kubernetes의 장점

6.PNG

Yarn과 같은 기존 배포 방법에 비해 kubernetes에서 Spark의 장점 :

1. 통합 리소스 관리. 어떤 유형의 작업이든 통합 Kubernetes 클러스터에서 실행할 수 있습니다. 더 이상 빅 데이터 작업을 위해 별도의 YARN 클러스터를 유지할 필요가 없습니다.
2. 컴퓨팅과 스토리지의 전통적인 하이브리드 배포는 종종 스토리지 확장을위한 추가 컴퓨팅 확장을 가져 오며, 이는 실제로 낭비입니다. 같은 이유로 컴퓨팅 성능을 향상시키기 위해 스토리지 낭비가 발생합니다. Kubernetes는 오프라인 컴퓨팅의 계산과 스토리지를 분리하여 일방적 인 결함을 더 잘 처리 할 수있는 스토리지 제한에서 직접 뛰어났습니다.
3. 유연한 클러스터 인프라.
4. YRAN의 복잡한 대기열 관리 및 대기열 할당없이 복잡한 분산 응용 프로그램의 리소스 격리 및 제한을 쉽게 실현합니다.
5. 컨테이너화의 장점. 각 애플리케이션은 Docker 이미지를 통해 자체 종속성을 패키징하고 Spark 버전을 포함하여 독립적 인 환경에서 실행할 수 있습니다. 모든 애플리케이션은 완전히 격리됩니다.
6. 빅 데이터는 클라우드로 이동합니다. 현재 빅 데이터 애플리케이션이 클라우드로 이동하는 데는 두 가지 일반적인 방법이 있습니다. 1) ECS를 사용하여 자체 YARN (YARN에 국한되지 않음) 클러스터를 구축합니다. 2) EMR 서비스를 구매합니다. 모든 클라우드 공급 업체는 현재 이러한 유형의 PaaS를 보유하고 있으며 이제 한 가지 더 선택할 수 있습니다 .—— Kubernetes.

Spark 스케줄링

7.PNG

그림에서 주황색 부분은 기본 점화 응용 프로그램 스케줄링 과정과는 Kubernetes에 스파크가 구현하는 특정 확장자 (노란색 부분)했다 KubernetesClusterManager을 . 어떤 KubernetesClusterSchedulerBackend 가 네이티브 CoarseGrainedSchedulerBackend를 확장하고 ExecutorPodsLifecycleManager, ExecutorPodsAllocator 및 KubernetesClient 및 기타 구성 요소를 추가 하여 포드 관리의 표준 Spark Driver Kubernetes로 변환 프로세스를 달성합니다.

Spark 제출

Spark Operator가 등장하기 전에 Kubernetes 클러스터에서 Spark 작업을 제출하는 유일한 방법은 Spark 제출을 통해서였습니다. Kubernetes 클러스터를 만든 후 로컬로 작업을 제출할 수 있습니다.

작업 시작의 기본 프로세스 :

1. Spark는 먼저 K8s 클러스터에 Spark 드라이버 (pod)를 만듭니다.
2. 드라이버가 실행되면 K8s API를 호출하여 Executors (pod)를 생성하고 Executors는 작업을 실행하는 캐리어입니다.
3. 작업 계산이 끝나면 Executor Pod가 자동으로 재활용되고 Driver Pod가 Completed 상태 (최종 상태)가됩니다. 사용자가 로그 등을 보는 데 사용할 수 있습니다.
4. Driver Pod는 사용자가 수동으로 정리하거나 K8s GC에 의해서만 재활용 될 수 있습니다.

이 Spark 제출 방법을 통해 직접 매개 변수는 유지 관리가 매우 어렵고 특히 사용자 지정 매개 변수가 증가 할 때 직관적이지 않습니다. 또한 Kubernetes Pod 및 Service, 이러한 기본 단위에 흩어져있는 Spark Application의 개념이 없습니다. , 애플리케이션 수가 증가하면 유지 관리 비용이 증가하고 통합 관리 메커니즘이 부족합니다.

Spark 연산자

Spark Operator  는 Kubernetes 클러스터에서 Spark 애플리케이션을 배포하고 유지 관리하는 문제를 해결하기 위해 개발되었습니다. Spark Operator는 Kubernetes Operator를 구현 한 클래식 CRD + 컨트롤러입니다.

9.PNG

다음 그림은 SparkApplication 상태 머신을 보여줍니다.

10.PNG

서버리스 Kubernetes + ECI

따라서 서버리스 Kubernetes 클러스터에서 Spark를 실행하면 실제로 네이티브 Spark를 더욱 간소화합니다.

11. PNG

저장 옵션

12.PNG

일괄 처리 데이터 소스의 경우 클러스터가 HDFS를 기반으로하지 않기 때문에 데이터 소스가 다르고 컴퓨팅과 스토리지를 분리해야합니다. Kubernetes 클러스터는 컴퓨팅 리소스를 제공하는 역할 만 담당합니다.

  • 데이터 소스의 저장소는 Alibaba Cloud Object Storage OSS, Alibaba Cloud Distributed Storage HDFS 등을 사용할 수 있습니다.
  • 계산 된 임시 데이터 및 Shuffle 데이터는 ECI에서 제공하는 무료 40GB 시스템 디스크 저장 공간을 사용할 수 있으며 Alibaba Cloud 데이터 디스크 및 CPFS / NAS 파일 시스템 등의 마운트를 사용자 정의 할 수 있으며 모두 성능이 매우 좋습니다.

실제 시연

이 실제 작업은 각각 TPC-DS 및 WordCount의 두 응용 프로그램을 보여줍니다. 클릭하면 특정 작업 데모 프로세스를 볼 수 있습니다.

서버리스 공식 계정 은 서버리스 기술에 대한 최신 정보를 공개하고, 서버리스 기술의 가장 완전한 콘텐츠를 수집하고, 서버리스 트렌드에주의를 기울이고, 실무에서 발생하는 혼란과 문제에 더 많은주의를 기울입니다.

추천

출처blog.51cto.com/14902238/2562984