千节点 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