写点什么

Hadoop Fair Call Queue 机制

作者:冰心的小屋
  • 2022-11-09
    上海
  • 本文字数:889 字

    阅读完需:约 3 分钟

Hadoop Fair Call Queue机制

1. 背景

HDFS NameNode 是 Hadoop 最重要的模块,负责文件系统命名空间管理的同时,还需要处理来自所有客户端的 RPC 读写请求,通常负载严重,为了防止单用户批量请求导致其他用户服务质量下降,NameNode 通过 Fair Call Queue 机制来保证不同用户请求被处理的公平性,该机制基于请求耗时的成本分析。

2. 请求耗时成本分析

请求耗时如果细分会有以下类型:

  • ENQUEUE:进入 Call Queue 之前耗时。

  • QUEUE:在 Call Queue 驻留时间。

  • HANDLER:非处理请求和响应耗时。

  • PROCESSING:实际用于处理请求耗时,恒等于 lock_free + lock_wait + lock_shared + lock_exclusive

  • LOCKFREE:无锁耗时。

  • LOCKWAIT:等待锁耗时。

  • LOCKSHARED:读锁耗时。

  • LOCKEXCLUSIVE:写锁耗时。

  • RESPONSE:结果压缩和发送耗时。


不同类型的耗时对应不同的成本权重:

  • 低权重(分值 1):LOCKFREE、RESPONSE 和 RESPONSE

  • 中权重(分值 10):LOCKSHARED

  • 高权重(分值 100):LOCKEXCLUSIVE

  • 其他耗时类型不计入成本例如 ENQUEUE 和 QUEUE


计算时间成本公式(时间单位:纳秒):

cost=LOCKFREE*1 + RESPONSE*1 + RESPONSE*1 + LOCKSHARED*10 + LOCKEXCLUSIVE*100
复制代码

3. 时间成本与用户的关联

请求中会携带着用户信息,用户有两种成本:

  1. 原始时间成本(rawCost):所有请求时间成本累加值。

  2. 衰减时间成本(decayedCost):衰减因子 0.5,每个周期(默认 5s)进行衰减,decayedCost=decayedCost*0.5

4. 优先级与优先级阀值的对应关系

优先级 scheduler.priority.levels 默认 4。

5. 优先级的影响

每个优先级对应一个 Fair Call Queue,优先级越高的 Queue 吞吐量越高,WeightedRoundRobinMultiplexer 从 Fair Call Queue 提取请求的数量依据该 Queue 的优先级。

6. 流程图

有了上面介绍的内容,再来看官网的流程图就没那么难了。



模块说明:

  • Listen Queue:用于缓冲用户的请求。

  • RpcScheduler:默认是不开启公平队列的,需要配置 scheduler.impl=org.apache.hadoop.ipc.DecayRpcScheduler,DecayRpcScheduler 时间成本计算和优先级的逻辑都在这里面。

  • Fair Call Queue:阻塞队列,每个优先级对应一个 Fair Call Queue。

  • WeightedRoundRobinMultiplexer:提取请求的数量与优先级别成正比。

  • Handler Threads:真正处理请求的线程。


发布于: 刚刚阅读数: 2
用户头像

分享技术上的点点滴滴,让我们一起进步。 2013-08-06 加入

一杯咖啡,一首老歌,一段代码,欢迎做客冰屋。

评论

发布
暂无评论
Hadoop Fair Call Queue机制_hadoop_冰心的小屋_InfoQ写作社区