- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
小米HDFS扩展性解决方案
随着集群规模的增大,小米在HDFS扩展性上遇到诸多挑战。本次议题介绍小米在HDFS扩展性上的一些探索与反思,以及对未来的规划。
展开查看详情
1 .⼩小⽶米HDFS扩展性解决⽅方案 李李经纶 / ⼩小⽶米⽂文件系统团队
2 .背景 2017 2018 2019 2020 单NameNode部署 国内主⼒力力集群完成 NameNode负载 RPC排队时间显著 到达瓶颈 Federation改造 不不均,内存不不⾜足 变⻓长,影响作业执 ⾏行行 2019 2019 Federation集群 单机房扩展性受限 改造RBF
3 .背景 2017 2018 2019 2020 单NameNode部署 国内主⼒力力集群完成 NameNode负载 RPC排队时间显著 到达瓶颈 Federation改造 不不均,内存不不⾜足 变⻓长,影响作业执 ⾏行行 2019 2019 Federation集群 单机房扩展性受限 改造RBF
4 .Federation Balance 多组Namespace负载不不均衡 • 堆⼤大⼩小接近128GB • RPC未来很可能成为瓶颈 300 50 225 37.5 150 25 75 12.5 0 0 File+Directories(million) AVG Qps
5 .Federation Balance Federation Balance⽅方案 问题 • 怎么迁移数据? • 怎么让Client找到新Namespace? ⽅方案 • 使⽤用Balance Job整合Balance过程 • 使⽤用Procedure Scheduler调度Job
6 .Federation Balance Balance Job • Balance Job:DistCpProcedure、MountTableProcedure、TrashProcedure。 • 每个Procedure可以包含⼀一个或多个Phase。 PRE_CHECK 预检查⼯工作 INIT_DISTCP 第⼀一轮DistCp DIFF_DISTCP ⼀一轮⼀一轮DistCp直到没有diff DISABLE_WRITE 禁⽌止写操作 FINAL_DISTCP 最后⼀一轮DistCp FINISH 完成
7 .Federation Balance ProcedureScheduler • ProcedureScheduler是⼀一个状态机,管理理Job的整个⽣生命周期:提交、执⾏行行、重试、错误恢复
8 .Federation Balance Federation Balance Tool • Federation balance tool: https://issues.apache.org/jira/browse/HDFS-15294
9 .Federation Balance 能更更快⼀一点吗? • NameNode⽀支持元数据迁移 • 使⽤用hard-link拷⻉贝data
10 .Federation Balance Balance Job (hard-link) • DistCpProcedure -> FederationRenameProcedure PRE_CHECK 预检查⼯工作 (DISABLE_WRITE) 禁⽌止src⽬目录写 SAVE_TREE 保存src⽬目录树 GRAFT_TREE 将⽬目录树接到dst NameNode HARD-LINK 对所有块做hard-link FINISH 完成
11 .Federation Balance FederationRenameProcedure • SaveTree
12 .Federation Balance FederationRenameProcedure • GraftTree
13 .Federation Balance FederationRenameProcedure • HardLink
14 .Federation Balance FederationRenameProcedure Performance • 2个NameSpace,14个DataNode,3副本 • Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz, 12 cores. • 128GB RAM, 4T x 12 HDD • Linux 2.6.32, JDK 8 Data sets Directories Files Blocks Time costs/ms File Size(BlkSize=256MB) set 7-7 19608 117649 117649 18,001 28.72TB set 7-8 37449 262144 262144 30,890 64TB set 8-9 597871 4782969 4782969 577,360 1.14PB
15 .背景 2017 2018 2019 2020 单NameNode部署 国内主⼒力力集群完成 NameNode负载 RPC排队时间显著 到达瓶颈 Federation改造 不不均,内存不不⾜足 变⻓长,影响作业执 ⾏行行 2019 2019 Federation集群 单机房扩展性受限 改造RBF
16 .RPC慢问题 2019.12 Namespace-1 RPC queueTime⾼高,影响yarn job上传Jar包 解决办法 迁移yarn job log到独⽴立Namespace 2020.05 Namespace-0 RPC processTime⾼高,影响Hive job rename 解决办法 定位读RPC突增原因,推动⽤用户优化 2020.07 Namespace-0 RPC queueTime⾼高,影响Hive job rename 解决办法 RBF多挂载点改造
17 .RPC慢问题 RPC来源 主⼒力力NS写RPC qps 主⼒力力NS写⽬目录占⽐比 other other 10% 24% IBR 41% create 16% addBlock hive staging 19% 90%
18 .RPC慢问题 多挂载点改造 • MultipleDestinationMountTableResolver + HashFirstResolver • Hive Staging + Yarn log
19 .RPC慢问题 改造前状况 • 各namespace RPC处理理延迟⾮非常不不均衡 • 主⼒力力namespace平均延迟194ms,峰值接近1s,峰值写qps接近4000 89 752 90 800 67.5 600 45 43 400 27 25 22.5 200 10569 148 10 1 1 1 1 1 10 1 1 1 1 1 0 0 AVG Process Time(ms) AVG Queue Time(ms)
20 .RPC慢问题 多挂载点改造效果 180 170 60 51 45 43 135 30 25 90 68 15 11 45 1 1 1 1 1 1 7 1 1 1 8 1 1 1 0 0 AVG Process Time(ms) AVG Queue Time(ms) 800 600 400 200 0 Before After ns-0 processTime ns-0 queueTime ns-7 processTime ns-7 queueTime
21 .背景 2017 2018 2019 2020 单NameNode部署 国内主⼒力力集群完成 NameNode负载 RPC排队时间显著 到达瓶颈 Federation改造 不不均,内存不不⾜足 变⻓长,影响作业执 ⾏行行 2019 2019 Federation集群 单机房扩展性受限 改造RBF
22 .跨机房部署 跨机房需求 • 单机房扩展性 • 海海外成本 • 多云迁移 • 机房容灾
23 .跨机房部署 跨机房⽅方案 • 流量量控制
24 .THANKS!