金山区网站制作,建设电影网站视频,手机网站免费优化,跨境电商要投资多少钱作者#xff1a;华相
Hago 于 2018 年 4 月上线#xff0c;是欢聚集团旗下的一款多人互动社交明星产品。Hago 融合优质的匹配能力和多样化的垂类场景#xff0c;提供互动游戏、多人语音、视频直播、 3D 虚拟形象互动等多种社交玩法#xff0c;致力于为用户打造高效、多样、…作者华相
Hago 于 2018 年 4 月上线是欢聚集团旗下的一款多人互动社交明星产品。Hago 融合优质的匹配能力和多样化的垂类场景提供互动游戏、多人语音、视频直播、 3D 虚拟形象互动等多种社交玩法致力于为用户打造高效、多样、最具沉浸式的社交娱乐体验在东南亚、中东和南美等地区拥有广泛的用户群。
在技术层面Hago 提供优秀的自研音视频技术实现更加稳定、高效和优质的数字人服务。包括 3D 超写实模型、真人主播模型制作虚拟人语音、表情驱动自然声音的文字转语音TTS成熟的虚拟直播能力。
长期以来Hago 都是在 IDC 里运行大数据任务以支撑上面的许多产品从 2022 年开始Hago 开始将大数据业务迁移上云并以 Spark on ACK 的形式来运行本文主要针对迁移过程进行介绍。
IDC 中遇到的问题
起初Hago 的 Spark 任务都是跑在 IDC 里的 Hadoop 集群里当时主要面临几个问题
资源限制问题当资源不足时导致任务堆积、排队扩容的时效性集群扩容逻辑比较复杂特别是节假日有活动时往往要提前一周准备扩容资源利用率问题Spark 任务有明显的波峰波谷波谷的资源浪费明显为了解决上面几个问题Hago 决定把大数据业务用云原生的方式迁移上云
实施
Spark 项目从 3.1 开始Spark on Kubernetes 的功能正式 GA。
所以ACK 作为托管的 Kubernetes 发行版提供更高的性能和更强稳定性自然成为阿里云上 Spark 的最佳运行底座这里为了更好的弹性效果Hago 选择了 Serverless 版本的 ACK。
ACK Serverless 在 ACK Serverless 集群中无需购买节点即可直接部署容器应用无需对集群进行节点维护和容量规划并且根据应用配置的 CPU 和内存资源量进行按需付费。ACK Serverless 集群提供完善的 Kubernetes 兼容能力同时降低了 Kubernetes 使用门槛用户更专注于应用程序而不是管理底层基础设施。
同时ACK Serverless 集群中的 Pod 基于阿里云弹性容器实例 ECI 运行在安全隔离的容器运行环境中。每个 Pod 容器实例底层通过轻量级虚拟化安全沙箱技术完全强隔离容器实例间互不影响。
在 Spark 这种大规模业务峰值脉冲和任务调度的场景ACK Serverless 集群的弹性优势也更加明显可以在 30s 内交付几千个 Pod。
但在真正运行之前还有一些问题需要解决
存算分离
上面提到Spark 任务对算力的需求不是 7*24 小时的但是存储是一直留存的如果用传统的方式在虚拟机上搭建 HDFS 集群那就需要常驻大量的算力也意味着产生大量的浪费。
Hago 选择存算分离的方案将数据放在 OSS 里通过 OSS-HDFS 服务把数据用 HDFS 接口暴露出来方便 Spark 任务读取。
详情请参阅OSS-HDFS 服务概述 [ 1]
shuffle service 的选型
shuffle 是 Spark 中最基本的过程之一同时shuffle 对于 Spark 应用程序的性能至关重要。
Spark 社区提供了默认的 shuffle service [ 2] 但存在一些问题
Spark Shuffle 对本地存储有依赖许多计算存储分离的机型、使用 ECI 的场景下没有自带本地盘需要额外购买和挂载云盘性价比和使用效率低Spark 基于 ShuffleTracking 实现了 Dynamic Allocation但 Executor 回收效率低下
具体表现如下
Shuffle Write 在大数据量场景下会溢出导致写放大Shuffle Read 过程中存在大量的网络小包导致的 Connection reset 问题Shuffle Read 过程中存在大量小数据量的 IO 请求和随机读对磁盘和 CPU 造成高负载对于 M*N 次的连接数在 M 和 N 数千的规模下作业基本无法完成
EMR 推出的 RSS 服务可以优化上述 Spark Shuffle 方案的问题完美支持 ACK 环境下的 Dynamic Allocation。
详情请参阅EMR Remote Shuffle Service [ 3]
落地效果 最终落地的架构图大致如上所示取得了非常理想的效果
基本不需要提前准备扩容只需要 30s任务不再需要排队不需要关心 IDC 的硬件故障问题
相关链接
[1] OSS-HDFS 服务概述
https://help.aliyun.com/zh/oss/user-guide/overview-1
[2] shuffle service
https://github.com/lynnyuan-arch/spark-on-k8s/blob/master/resource-managers/kubernetes/architecture-docs/external-shuffle-service.md
[3] EMR Remote Shuffle Service
https://help.aliyun.com/zh/emr/emr-on-ecs/user-guide/celeborn#task-2184004