小米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!