HDFS RPC限流方案实践探索

本文介绍了在HDFS集群中实施RPC限流的实践经验,重点探讨了FairCallqueue的使用,包括动态刷新配置、分级RPC队列的调参策略以及如何通过监控指标进行优化调整,旨在确保限流方案的有效性。
摘要由CSDN通过智能技术生成

前言


在前面的一篇关于分布式集群下的限流方案文章里,笔者阐述了一种在HDFS集群里的RPC限流架构。其间也提到了很多关于分布式限流架构里的关键要素,包括用户区分,分级队列的概念等等。不过上次文章更多偏向于理论原理篇,本文笔者将结合实际生产环境的特点,来给大家讲讲如何真正将限流方案实施到生产集群,并能够达到预期的效果。

HDFS RPC限流方案


这里要首先聊聊笔者目前集群所将要采用的HDFS RPC限流方案。和上篇文章所设计的略有不同 ,在最新的方案设计里面暂时不考虑Router的服务。这里主要出于2点理由:1)我们目前单Router的处理速度非常快,很少出现请求积压的情况,这样不太容易触发到FairCallqueue的限流效果。2)Router服务目前不支持refreshCallqueue的动态刷新功能。FairCallqueue的功能需要不断进行调参优化改进,如果不支持动态刷新的功能,将会带来比较高的部署成本。

所以目前我们是完全在下游NameNode做的限流设计,限流的结构依然采用的是社区比较成熟的FairCallqueue的功能。FairCallqueue的功能在设计上与我们的使用场景极为吻合,再加上社区在此功能上进行了不断地完善,使得集群admin管理员能够更加方便,灵活地在NameNode上使用此功能。FairCallqueue目前不仅对于其内部priority queue的数量能进行配置化设置之外,还能够对RPC优先级设置的阈值进行调整。但同时这里指出一点,FairCallqueue这种过于灵活的参数配置,让集群管理员一开始不知道如何精确地对FairCallqueue功能进行调参。

出于上面精确调参的问题,笔者在FairCallqueue内部多实现了一个admin的管理命令,来能够动态调整user RPC的priority。这里admin设置的user priority会覆盖掉由FairCallqueue内部算法算出的priority结果。这样能够避免由于参数配置不准确导致部分用户的application被限流处理。

通过上面admin命令的改造再结合HDFS本身的refreshCall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值