少走跨机架带宽理论可行,放进 HDFS 里也更快

2026-05-26 19

42.png


做数据中心存储的人都明白:纠删码省空间,修起来也费网络。很多时候最贵的还不是“总共搬了多少数据”,而是“这些数据是不是都在跨机架地来回跑”。作者2016 年那篇“Double Regenerating Codes for Hierarchical Data Centers”论文已经说明:单节点修复时,多用一点机架内带宽就有机会把跨机架流量压得很低。可新的问题马上就来了:这个思路能不能接进真实系统里,而不是只停在理论上?


这篇论文把这个问题往前推进了一大步。作者没有在理论上重复证明DRC,而是提出一个可部署框架,叫 DoubleR,把 “分层修复”这件事真正做进 Hadoop 分布式文件系统 HDFS 里。换句话说,这篇文章真正要回答是“接进真实存储系统之后,到底能不能又稳又快的把理论里的带宽收益兑现出来”。


DoubleR就是一个专门替机房修坏块的“分层总调度”。传统修法是哪里坏了直接去别的机架拿整份材料;DoubleR 的思路是,先让每个机架内部把自己手上的东西尽量整理好,只把整理后的结果发给目标节点。论文里把这个叫 repair layering,就是把修复拆成机架内层和机架间层。目的不是让所有链路都最省,是承认数据中心的链路本来就分贵贱,优先省最紧张、最容易堵的跨机架那一段。


图 1展示了DoubleR 修一个坏块时,数据到底怎么流。目标节点负责把最后缺掉的块拼回来;另一个是每个非本地机架里挑出的 relayer,作为“中继者”先在机架内收集并重新编码,再把结果跨机架发出去。这个设计看起来像多了一层,但恰恰是这层“机架内先汇总”的动作,把最贵的跨机架数据量压了下来。不是让所有机器都直接向外喊话,是每个机架先派一个代表把话总结好了再发。


44.png


这篇论文分三层证据来讲。第一层是理论层。论文承接 2016 年的 DRC 结果,说明在层级化数据中心里,跨机架修复流量是可以被最小化的。第二层是构造层。作者没有停在理论的方案,而是专门设计了两大家族的实用 DRC 构造,让它们更适合实际部署。第三层是系统层。作者把这些构造接进 Facebook 的 HDFS-RAID 体系里,用 JNI、并行修复和 API 分层跑起来,最后再用测试床看性能是不是跟理论一致。


图 6说明“理论收益真落地了”:节点真坏了以后,DoubleR 驱动下的 DRC 修复吞吐能不能接近理论上跨机架流量节省对应的倍数?当网关带宽分别是 200Mb/s、500Mb/s、1Gb/s 时,DRC(9,5,3) 的节点恢复吞吐分别是 RS(9,5,3) 的 2.96 倍、2.92 倍和 2.81 倍。这个结果说明当跨机架带宽真的成了瓶颈时,DoubleR 基本把理论里“一块对三块”的带宽优势兑现成了真实恢复速度上的成倍提升。


45.png


图 6 后面补了一句很重要的边界:当网关带宽放到 2 Gb/s 时,修复的主要瓶颈开始从跨机架传输转移到磁盘读和别的本地开销上。此时,DRC(9,5,3) 相对 RS(9,5,3) 的恢复吞吐增益会掉到2.04倍;更极端一点,DRC(6,3,3) 在这个带宽下甚至会比 MISER(6,3,3) 低10%。说明只有当跨机架传输是主瓶颈时,分层修复的优势才最明显。


图 7要回答的是:如果客户端正在访问一个坏掉的数据块,系统能不能更快把它临时补出来?当网关带宽分别设为 200 Mb/s、500 Mb/s、1 Gb/s 和 2 Gb/s 时,DRC(9,5,3) 的降级读时间分别比 RS(9,5,3) 少 66.9%、62.3%、58.0% 和 55.4%。这组数字很有说服力,对用户来说,“一个坏块补得快不快”最终体现在读一个不可用块时到底要多久。


46.png


这篇论文不单单讲性能,还补了可靠性账本。作者用 MTTDL(平均到数据丢失的时间)去看“把多个块放在同一机架里”是不是太冒险。论文发现:只考虑独立节点故障时,层级化块放置修得更快,MTTDL 反而比平铺式放置高大约 33%。一旦把相关故障算进来,层级化放置的劣势会更明显。比如表 1 的一个例子里,当 1/λ1 = 2 年且考虑相关故障时,层级化放置的 MTTDL 是 3.28×10^6 年,平铺式是 2.54×10^6 年,前者高 29%;当节点更稳定或可用带宽更高时,优势会减弱,甚至反过来。也就是说,DoubleR是在“更快修复”和“更强机架级容错”之间做一笔有条件的交换。


47.png


工程上看,这篇论文对 HDFS 的改造有两个值得专业读者注意的方向。第一,大量并行化:不同节点并行修、同一块的不同条带并行修、节点恢复时多个条带同时解码,目的就是把除了跨机架传输之外的开销尽量压下去。第二,把修复流程抽成 API:NodeEncode、RelayerEncode 和 Decode。DoubleR 不是一个只服务某个编码构造的临时 patch,而是一个把“分层修复”变成可插拔能力的框架。


作者简介:胡燏翀,华中科技大学计算机科学与技术学院教授、博士生导师。主要研究分布式存储系统与容错编码技术,聚焦数据中心环境下的高效数据修复与系统可靠性优化。


DOI:10.1145/3149349

会议官网

扫码关注艾思科蓝订阅号 回复“0”即可领取该资料

去登录