Hago의 Spark on ACK 연습

저자: 화샹

2018년 4월에 출시된 Hago는 Huanju Group의 다인용 인터랙티브 소셜 스타 제품입니다. Hago는 고품질 매칭 기능과 다양한 수직 시나리오를 통합하여 대화형 게임, 멀티 플레이어 음성, 비디오 라이브 방송, 3D 가상 이미지 상호 작용 및 기타 소셜 게임 플레이를 제공하며 사용자를 위한 효율적이고 다양하며 가장 몰입도 높은 소셜 경험을 만들기 위해 최선을 다하고 있습니다. .동남아시아, 중동, 남미 지역의 광범위한 사용자 기반을 갖춘 엔터테인먼트 경험.

기술적인 측면에서 Hago는 보다 안정적이고 효율적이며 고품질의 디지털 휴먼 서비스를 달성하기 위해 우수한 자체 개발 오디오 및 비디오 기술을 제공합니다. 3D 초현실적 모델, 실제 인물 앵커 모델 제작, 가상 인간 음성 및 표현 구동, 자연스러운 사운드 TTS(텍스트 음성 변환), 성숙한 가상 라이브 방송 기능을 포함합니다.

Hago는 위의 많은 제품을 지원하기 위해 오랫동안 IDC에서 빅데이터 업무를 운영해 왔으며, 2022년부터 Hago는 빅데이터 사업을 클라우드로 마이그레이션하여 Spark on ACK 형태로 운영할 예정입니다. 기사에서는 주로 마이그레이션에 중점을 두고 프로세스를 소개합니다.

IDC에서 발생한 문제

처음에 Hago의 Spark 작업은 모두 IDC의 Hadoop 클러스터에서 실행되었지만 당시에는 몇 가지 주요 문제가 있었습니다.

  • 자원 제한 문제: 자원이 부족하면 작업이 쌓여 대기열에 쌓입니다.
  • 확장의 적시성: 클러스터 확장의 논리는 상대적으로 복잡하며, 특히 휴일에 활동이 있는 경우 일주일 전에 확장을 준비해야 하는 경우가 많습니다.
  • 리소스 활용 문제: Spark 작업에는 뚜렷한 최고점과 최저점이 있으며 최저점의 리소스 활용도는 분명합니다.
  • 위와 같은 문제를 해결하기 위해 하고는 클라우드 네이티브 방식을 활용해 빅데이터 사업을 클라우드로 이전하기로 결정했다.

구현하다

Spark 프로젝트는 버전 3.1부터 시작되었으며 Kubernetes의 Spark 기능이 공식적으로 GA되었습니다.

따라서 관리형 Kubernetes 배포판인 ACK는 더 높은 성능과 더 강력한 안정성을 제공하며 자연스럽게 Alibaba Cloud에서 Spark의 최고의 실행 기반이 됩니다. 더 나은 탄력성을 위해 Hago는 ACK의 서버리스 버전을 선택했습니다.

ACK 서버리스

ACK 서버리스 클러스터에서는 노드를 구매하지 않고도 컨테이너 애플리케이션을 직접 배포할 수 있으며, 클러스터의 노드 유지 관리 및 용량 계획이 필요하지 않습니다. 응용 프로그램에 의해. ACK 서버리스 클러스터는 완전한 Kubernetes 호환성을 제공하고 Kubernetes 사용 임계값을 낮춰 사용자는 기본 인프라 관리보다 애플리케이션에 더 집중할 수 있습니다.

동시에 ACK 서버리스 클러스터의 포드는 Alibaba Cloud 탄력적 컨테이너 인스턴스 ECI를 기반으로 하는 안전하고 격리된 컨테이너 운영 환경에서 실행됩니다. 각 Pod 컨테이너 인스턴스의 하위 계층은 경량 가상화 보안 샌드박스 기술을 통해 완전히 격리되어 있으며, 컨테이너 인스턴스는 서로 영향을 미치지 않습니다.

Spark와 같은 대규모 비즈니스 피크 펄스 및 작업 예약이 있는 시나리오에서는 ACK 서버리스 클러스터의 탄력성 이점도 더욱 분명하며 수천 개의 Pod를 30초 이내에 전달할 수 있습니다.

그러나 실제로 실행하기 전에 해결해야 할 몇 가지 문제가 여전히 있습니다.

저장과 계산의 분리

위에서 언급한 것처럼 Spark 작업의 컴퓨팅 파워 요구 사항은 7*24시간이 아니라 스토리지가 항상 유지되므로 기존 방법을 사용하여 가상 머신에 HDFS 클러스터를 구축하는 경우 많은 양의 컴퓨팅 파워가 필요합니다. .이것은 많은 폐기물을 생성한다는 것을 의미합니다.

Hago는 저장과 계산을 분리하는 솔루션을 선택하고 데이터를 OSS에 넣고 OSS-HDFS 서비스를 통해 HDFS 인터페이스를 사용하여 데이터를 노출하여 Spark 작업에서 쉽게 읽을 수 있도록 합니다.

자세한 내용은 OSS-HDFS 서비스 개요를 참조하세요. [ 1]

셔플 서비스 선택

Shuffle은 Spark의 가장 기본적인 프로세스 중 하나이며 Spark 애플리케이션의 성능에 매우 중요합니다.

Spark 커뮤니티는 기본 셔플 서비스 [ 2] 를 제공 하지만 몇 가지 문제가 있습니다.

  • Spark Shuffle은 로컬 스토리지를 사용하는데, 컴퓨팅과 스토리지가 분리된 많은 모델에는 ECI 사용 시 로컬 디스크가 제공되지 않으며, 추가로 클라우드 디스크를 구입하여 마운트해야 하므로 비용 성능과 사용 효율성이 낮습니다.
  • Spark는 ShuffleTracking을 기반으로 동적 할당을 구현하지만 Executor 재활용 효율성은 낮습니다.

구체적인 성능은 다음과 같습니다.

  • Shuffle Write는 대규모 데이터 볼륨 시나리오에서 오버플로되어 쓰기 증폭이 발생합니다.
  • Shuffle Read 과정에서 많은 수의 네트워크 패킷으로 인해 연결 재설정 문제가 발생합니다.
  • Shuffle Read 프로세스 중에 작은 데이터 볼륨의 IO 요청과 임의 읽기가 많이 발생하여 디스크 및 CPU에 높은 부하가 발생합니다.
  • M*N 연결 수의 경우 M 및 N 수천 규모에서는 기본적으로 작업을 완료하는 것이 불가능합니다.

EMR에서 출시한 RSS 서비스는 위에서 언급한 Spark Shuffle 솔루션 문제를 최적화하고 ACK 환경에서 동적 할당을 완벽하게 지원합니다.

자세한 내용은 EMR 원격 셔플 서비스 [ 3] 를 참조하십시오.

바닥 효과

최종 아키텍처 다이어그램은 대략 위에 표시된 것과 같으며 매우 이상적인 결과를 얻었습니다.

  • 기본적으로 미리 준비할 필요가 없고, 확장하는데도 30초밖에 걸리지 않습니다.
  • 작업을 더 이상 대기열에 넣을 필요가 없습니다.
  • IDC 하드웨어 오류 문제에 대해 걱정할 필요가 없습니다.

관련된 링크들:

[1] OSS-HDFS 서비스 개요

https://help.aliyun.com/zh/oss/user-guide/overview-1

[2] 셔플 서비스

https://github.com/lynnyuan-arch/spark-on-k8s/blob/master/resource-managers/kubernetes/architecture-docs/external-shuffle-service.md

[3] EMR 원격 셔플 서비스

https://help.aliyun.com/zh/emr/emr-on-ecs/user-guide/celeborn#task-2184004

잘 알려진 오픈 소스 프로젝트의 저자는 열광으로 인해 직장을 잃었습니다 - "온라인에서 돈을 구하다" No Star, No Fix 2023 세계 10대 엔지니어링 성과 발표: ChatGPT, Hongmeng 운영 체제, 중국 우주 정거장 및 기타 엄선된 ByteDance OpenAI에서 '금지' Google, 2023년 가장 인기 있는 Chrome 확장 프로그램 발표 Ni Guangnan 학자: 샤오미 휴대폰 BL 잠금 해제를 위해 국산 SSD가 수입 HDD를 대체하길 바라나요 ? 먼저 Java 프로그래머 인터뷰 질문을 해보세요. Arm은 70명 이상의 중국 엔지니어를 해고하고 중국 소프트웨어 사업을 재편할 계획입니다. OpenKylin 2.0 공개 | UKUI 4.10 더블 다이아몬드 디자인, 아름답고 고품질! Manjaro 23.1 출시, 코드명 "Vulcan"
{{o.이름}}
{{이름}}

Supongo que te gusta

Origin my.oschina.net/u/3874284/blog/10348917
Recomendado
Clasificación