《【知乎贾承昆】知乎多云数据缓存实践.pdf》由会员分享,可在线阅读,更多相关《【知乎贾承昆】知乎多云数据缓存实践.pdf(41页珍藏版)》请在三个皮匠报告上搜索。
1、知乎多云数据缓存实践知乎多云数据缓存实践贾承昆知乎数据平台负责人个人介绍知乎数据平台团队负责人曾任职于阿里云、猿辅导等公司,目前在知乎负责大数据平台和数据架构相关的工作多年 DevOps 和大数据架构领域工作经验1.背景和简介介绍知乎的多云背景和现状3.基于 Alluxio 的多云缓存方案主要介绍 Alluxio 在知乎算法场景的落地2.自研组件 UnionStore 介绍知乎自研的跨机房数据缓存系统4.总结和展望业务收益和社区贡献Part1 Part1 背景和介绍背景和介绍背景和简介多云多机房,专线互联一个大数据机房,多个在线机房自建基础设施和公有云设施共存多云架构训练在线服务离线数据HDF
2、SPodPodPodPod在线服务机房,部署大部分的对外服务机器学习机房,承担大部分的训练计算大数据机房,负责数据存储多机房的挑战高并发的数据访问有限的专线带宽统一的访问接口理想的多云架构训练在线服务离线数据HDFSPodPodPodPod每个机房增加一层数据缓存,确保数据重复读取只经过一次专线对已经缓存过的数据有加速效果支持 FUSE/HTTP 等访问接口数据加速层数据加速层数据加速层Part2 Part2 自研组件自研组件 UnionStore UnionStore自研组件 UnionStore强一致元数据S3 兼容的 API提供本机房缓存能力训练在线服务离线数据HDFS推理服务对象存储U
3、nionStore对象存储UnionStoreUnionStore 的问题缺少元数据缓存,接口性能强依赖 HDFS缓存层选择了云厂商的对象存储,其带宽随着业务发展逐渐成为瓶颈UnionStore 自身没有存储,虽然设计简单,但是读取数据的延时非常高Part3 Part3 基于基于 Alluxio Alluxio 多云缓存方案多云缓存方案Alluxio 简介Alluxio 功能调研高性能的数据和元数据缓存 透明缓存,无需改造业务逻辑 支持多种元数据缓存策略丰富的 UFS 支持 HDFS S3 .多种 API 支持 Alluxio Client S3 API POSIX活跃的社区 各个大厂的实践案
4、例 活跃的 Github 社区场景一场景一 训练加速训练加速业务场景数据集更新频率低,多个 epoch 重复读取数据的不同区块GPU 资源昂贵分布式训练,通常需要使用 FUSE 访问数据数据湖存储机器学习平台FUSEHDFS对象存储专线训练场景的痛点问题统一 POSIX 访问数据读取慢导致 GPU 利用率低机房专线稳定需求支持 POSIX统一不同 UFS 的访问接口支持本地缓存数据湖存储机器学习平台Alluxio 加速层TrainingPodFUSETrainingPodTrainingPodTrainingPodHDFS对象存储Alluxio Fuse 性能测试FUSE 部署模式Daemon
5、Set()共享缓存节省资源挂载点恢复CSI隔离性好运维容易Alluxio 集群部署模式瘦集群胖客户端3 Master+3 Worker数百 FUSE 客户端单节点 10TB NVME 缓存AlluxioMasterJob MasterMasterJob MasterMasterJob MasterWorkerJob WorkerWorkerJob WorkerWorkerJob WorkerKubernetesTrain PodFUSE PodTrain PodTrain PodFUSE PodTrain PodTrain PodFUSE PodTrain Pod生产环境问题1.FUSE 不稳
6、定容易异常退出2.训练性能不稳定,慢于本地磁盘3.Alluxio Master 节点负载高,容易崩溃1.FUSE Pod 健康检查失败2.FUSE 容器 OOM原因:1.Direct Memory 配置不合理2.Kernel Cache 的回收不受控制,需要预留解决思路:1.-XX:MaxDirectMemorySize=16G2.预留 Kernel CacheTotal Pod MemoryFUSE KernelJVMDirect MemoryHeap3.挂载点恢复挂 载 点 恢 复 指 的 是:当 FUSE Pod Crash 之后,业务 Pod 的