前言
在上篇文章(一次HDFS JournalNode transaction lag问题分析排查)中,笔者详细地讲述了一次HDFS JN lag延时问题的分析排查,在文中结尾笔者提到了问题的root cause是因为部署在JN同节点上的RM traffic陡增造成的JN lag影响。不过笔者当时只是发现了与RM traffic陡增的可能因素,并未进一步分析这些增加的RM traffic的真正来源。在后续的时间里,我们对这些RM traffic的组成部分以及为什么做了更加进一步的分析,最终真正找到了问题的来源。本文笔者将简单阐述JN lag问题的后续问题:RM traffic陡增的缘由。
背景
首先提供RM traffic陡增的一个趋势图,如下图所示(在上篇JN lag的文章中也提到过)。
当时的一个推测方向是部分业务方的业务上的调整,导致了此部分流量的变化。为了更加明确我们的这个猜想,后续我们进行了对RM traffic的进一步分析。
iftop命令分析
在Linux的工具命令中,iftop命令能够检测出准实时的节点带宽使用的多少。于是,我们在RM的机器上进行了iftop的执行,命令执行结果如下:
命令:sudo iftop -B -P
rm-node:8031 => nm-node1:42810 47.2KB 94.4KB 94.4KB
<= 996B 2.15KB 2.15KB
rm-node:8031 => nm-node2:37624 47.2KB 82.6KB 82.6KB
<= 1.33KB 1.95KB 1.95KB
rm-node:8031 => nm-node3:46594 141KB 82.5KB 82.5KB
<= 2.96KB 1.97KB 1.97KB
rm-node:8031 => nm-node4:59782 47.2KB 82.6KB 82.6KB
<= 1.12KB 1.90KB 1.90KB
rm-node:8031 => nm-node5:41700 47.2KB 82.6KB 82.6KB
<= 1.18KB 1.79KB 1.79KB
rm-node:8031 => nm-node6:50672 47.2KB 82.6KB 82.6KB
<= 966B 1.79KB 1.79KB
rm-node:8031 => nm-node7:55306 94.4KB 82.6KB 82.6KB
<= 1.88KB 1.71KB 1.71KB
rm-node:8031 => nm-node8:51870 47.2KB 82.6KB 82.6KB
<= 1.71KB 1.68KB 1.68KB
rm-node:8031 => nm-node9:49730 47.3KB 82.6KB 82.6KB
<= 907B 1.62KB 1.62KB
上图数据是其中截取的一个时刻点的RM traffic数据。我们得到了许多十分关键的信息:
- RM的traffic使用主要集中在8031端口的数据传输上。
- 在RM 8031口的通信过程中,从RM到NM的数据传输要远大于从NM到RM的方向的数据传输。
再进一步分析RM 8031口的用途,主要用于做RM、NM之间进行heartbeat通信的。我们再转换成上面iftop的语义,NM向RM发送node heartbeat,数据量比较小,但是RM返回给NM的heartbeat response则耗费了同比大很多倍的内容大小。
tcpdump的同期验证
同期,我们挑选了1台NM,用tcpdump命令,抓取在此机器上的实时流量,src和dst分别设置成rm机器进行测试。
结果如下:
NM->RM
命令:tcpdump dst rm-node
20:16:48.028768 IP nm-node.38708 > rm-node.8031: Flags [P.], seq 13088574:13092670, ack 4233065, win 2893, options [nop,nop,TS val 561229060 ecr 498327940], length 4096
20:16:48.028778 IP nm-node.38708 > rm-node.8031: Flags [P.], seq 13092670:13096766, ack 4233065, win 2893, options [nop,nop,TS val 561229060 ecr 498327941], length 4096
20:16:48.028791 IP nm-node.38708 > rm-node.8031: Flags [P.], seq 13096766:13100862, ack 4233065, win 2893, options [nop,nop,TS val 561229060 ecr 498327941], length 4096
20:16:48.028800 IP nm-node.38708 > rm-node.8031: Flags [P.], seq 13100862:13104958