千节点 Alluxio 助力腾讯游戏 AI

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 千节点 Alluxio 集群助力游戏 AI 业务 陈寿纬 Alluxio OS核心工程师 罗格斯大学计算机博士 毛宝龙 腾讯 Alluxio OTeam 负责人 Alluxio PMC Apache Ozone committer
2. 目录 Part 1 Alluxio介绍 Part 2 业务背景介绍 Part 3 研发调优 Part 4 对比测试 Part 5 未来工作
3. Alluxio 概览 全球独创性:全球首个分布式超大 规模数据编排系。 产学研一体:孵化于加州大学伯克利分校AMP实验室,是创始人李浩源博士的 论文课 题。 全球化开发:孵化之初即秉承 “开源开放”愿景,实现了项目在全球范 围内的开源。目 前已经有超过300多个组织机构以及超过1100位贡献者参与开发。 全面部署验证:全球十大互联网公司中有八家已经在生产环境中部署了 Alluxio;已经 在全球Web规模的现代化数据服 务的生产环境中得到验证。 3
4. Alluxio 介绍 Java File API HDFS Interface POSIX Interface S3 Interface REST API Data Orchestration VDFS HDFS Driver Swift Driver S3 Driver NFS Driver
5. 分布式缓存 Big Data ETL A B Alluxio Server Big Data Query Alluxio Server Model Training Alluxio Server C A B A /path1/file1 C /path2/file2 5
6. 统一命名空间 Big Data ETL Alluxio Server Big Data Query Alluxio Server Model Training Alluxio Server 6
7. 多种 API 适用于不同场景 Big Data ETL Big Data Query HDF S compatible API Alluxio Server Alluxio Server Model Training POSIX Alluxio Server 7
8. 通过Alluxio POSIX接口加速训练集群I/O POSIX POSIX Alluxio Server ... POSIX Alluxio Server GPU Instance 8
9. Alluxio在机器学习场景下的挑战 训练数据为海量 小文件(如图片) ESSENTIAL 训练数据规模超 过单机可用存储 容量 ESSENTIAL 高并发度的分布 式训练任务,要 求I/O高吞吐 ESSENTIAL 9
10. 优化设置及调整资源 灵活选取Heap/Off-heap 方式保存文件元数据信息 - - Heap metastore (链接):元数据保存在内存中 ROCKS off-heap metastore ( 链接 ): 元数据保存在内存以及磁盘中 支持client/worker 连接线程所需空间 - 高并发情况下,可能有成千上万并发的连接线程,给足够的空间以减少线程池内存压 力,提高响应速度 如果频繁 GC,按指南分配Java进程内存 实际监控内存使用情况。如果频繁 GC,则调大数值。如果使用率低,则调小数 值。 ALLUXIO_MASTER_JAVA_OPTS+=" -Xms256g -Xmx256g " ALLUXIO_JAVA_OPTS+="-XX:MaxDirectMemorySize=10g " 10
11. 在Master端合理缓存元数据 避免频繁触发Alluxio Master 缓存元数据同步 - 开启定期全局元数据同步(链接) - - - 例如:alluxio.master.ufs.active.sync.interval=30sec 每30秒同步一次底层 存储系统元数据 针对用户操作定期促发元数据同步 - 例如:alluxio.user.file.metadata.sync.interval=10min 用户对一文件进行 操作,如果距离上次对该文件的元数据同步超过10分钟,会触发新一次元 数据同步。 更多元数据一致性优化建议: 参考Alluxio PMC博客“Metadata Synchronization in Alluxio: Design, Implementation and Optimization” Alluxio Master 11
12. FUSE端缓存元数据 通过 Alluxio Fuse 客户端二次元数据缓存来缓解 Alluxio Master 元数据压力 (链接) alluxio.user.metadata.cache.enabled=true alluxio.user.metadata.cache.expiration.time=2h alluxio.user.metadata.cache.max.size=10000000 设置 Fuse 挂载选项在操作系统层面对元数据进一步缓存 attr_timeout=7200,entry_timeout=7200 调大文件属性,名称查找等操作系统缓存时 间 FUSE Alluxio FUSE Alluxio Master 12
13. Alluxio自建性能测试工具: StressBench StressBench :一套Alluxio自带的性能测试,用来测试不同环境下 Alluxio各个部分的处理速度 优点:不依赖外部组件,只需要运行的Alluxio集群 13
14. Fuse StressBench单节点测试示例 读取测试文件 $ bin/alluxio runClass alluxio.stress.cli.fuse.FuseIOBench \ --local-path /mnt/fuseIOBenchRead \ --operation LocalRead \ --threads 4 \ --duration 30s \ --num-dirs 100 \ --num-files-per-dir 1000 \ --file-size 100k 14
15. Fuse StressBench单节点测试示例 测试结果 (部分) 15
16. Accelerating Machine Learning / Deep Learning in the Cloud: Architecture and Benchmark Alluxio加速ML/DL云上训练白皮书
17. 背景介绍——游戏 AI ▪ 游戏 AI 离线训练业务 ▪ ▪ ▪ 监督学习( Supervised Machine Learning ) ▪ 特征计算(生成) ▪ 模型训练 ▪ 模型评估 强化学习 (Reinforcement Machine Learning) 游戏依赖 ▪ 游戏本体 ▪ 游戏翻译器 ▪ 游戏回放工具
18. 背景介绍——部署架构 ✔ Raft HA ✔ Alluxio Fuse sidecar ✔ Worker & App 亲和性部署
19. 研发调优——Cephfs ufs 支持 两种实现方式 ● ceph-Hadoop ● cephfs-ufs 要解决的问题 ● umount、再mount问题 ● 共存问题 Alluxio 的优势 ● Alluxio 提供很好的云上支持 ● Alluxio 可以贴近业务部署 ● Alluxio 的 worker 使用内存盘,缓存 cephfs 热点数据
20. 研发调优——Ratis-shell ● ● ● ● ● ● ● ● ● ratis-shell github project RATIS-1412 apache ratis module 支持 alluxio、ozone 支持其它基于 ratis 的服务 支持 HA 切换 支持获取 peer 信息 支持 add peer,remove peer 支持设置优先级 支持生成 snapshot mvn clean install assembly:single -DskipTests -Dmaven.javadoc.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Denforcer.skip=true -Djsse.enableSNIExtension=false -Prelease -Papache-release
21. 研发调优—— FUSE Shell ● ● ● 清理 metadata cache ls -l /tmp/alluxio-fuse/testdir/.alluxiocli.metadatacache.drop" 清理所有 metadata cache ls -l /tmp/alluxio-fuse/.alluxiocli.metadatacache.dropAll" 查询 metadata cache ls -l /tmp/alluxio-fuse/.alluxiocli.metadatacache.size"
22. 研发调优——动态参数配置 ● 新增 Update conf shell 发送变更配置项到 master ● Worker & client 感知配置项变化并更新 ● 配置项变化应用到具体代码逻辑
23. 研发调优——其它 更多有价值的监控指标 ● Total.Blocks ● RpcOps ● Ratis 指标 ● OS, JVM, GC 指标 ● Cache hit rate 指标 ● PendingQueue ● Lock pool 大小 ● block Remover 的删除块的数量 易用性提升 ● Job Service OOM 问题修复 ● stacks 页面展示线程信息 ● 挂载表可视化 ● 下线节点 ● 支持配置使用 IP 作为通信 host ● 支持域名作为 host ● 通用的打包脚本,支持集成指定内部 hadoop 版本 ● 避免死锁等严重问题潜在原因修复
24. 研发调优——配置优化吞吐提升 ● ● ● ● ● ● ● ● ● ● ● ● ● alluxio.user.file.passive.cache.enabled=false alluxio.debug=true alluxio.conf.dynamic.update.enabled=true alluxio.master.cluster.metrics.update.interval=2min alluxio.master.file.access.time.journal.flush.interv al=1d alluxio.user.conf.sync.interval=10min alluxio.user.file.passive.cache.enabled=false alluxio.user.file.replication.max=3 alluxio.master.update.check.enabled=false -Dupdate.check.enabled=false tencent kona jdk11 -XX:+UseG1GC alluxio.master.audit.logging.enabled=true -> false alluxio.user.rpc.shuffle.masters.enabled=true
25. 对比测试 ● ● ● ● master: 3 个 master 的 HA 部署。 worker: 1000个 worker,4TB 的存储,ramdisk 业务 pod: 1000个,每个 pod 是4个核的并行任务。 测试业务:某 moba 游戏 AI 特征计算任务(25w对局) 客户端 任务量 完成量 失败量 时长 失败率 alluxio-fus 250000 248152 1848 2h46min 0.73% 250000 242930 7070 2h40min 2.8% e ceph-fuse
26. 对比测试 ● 上图是 Alluxio 的元数据压力指标(rpc count), 任务初期会有一个冲击,之后 master 元数据压力逐 渐降低。优化后,这个指标可以达到5w多。 ● 下图是 cephfs 的 mds 的 qps,前半段是使用 Alluxio 承接业务的情况下,ceph mds 的 qps 几乎 为 0,说明 Alluxio 抵挡了大部分业务压力。后半段 是未使用 alluxio 的情况,cephfs 的 mds 的 qps 高峰达 5000多。
27. 未来工作 LIST 1 提升吞吐上限 2 利用 Alluxio CSI 解耦业务和 Alluxio FUSE 3 Alluxio localcache + Alluxio metadatacache 优化 4 缓存 balancer 5 智能读写调度策略
28. 腾讯贡献——总览 PMC 1 Commiter 2 文章 10+ 分享 10+ PR Merged 400+ Contributor 20+ 团结一切可以团结的力量,寻求互利共赢,不闭门造轮
29. 引用 • Ratis-shell https://github.com/opendataio/ratis-shell • HCFSFuse https://github.com/opendataio/hcfsfuse • 千节点 Alluxio 助力腾讯游戏 AI 业务 https://cloud.tencent.com/developer/article/1889789 • Alluxio线程池结构与吞吐量调优(请关注Alluxio 公众号)
30. 我们欢迎你 • baoloongmao@tencent.com • xiao@alluxio.com THANKS

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 20:37
浙ICP备14020137号-1 $Carte des visiteurs$