데이터 노드 시스템의 느린 블록 수신에 대한 Hadoop+ 경고

데이터 노드 시스템의 느린 블록 수신에 대한 Hadoop+ 경고

데이터 노드 머신(각 데이터 노드 머신에는 서비스 노드 관리자도 포함)이 포함된 Hadoop 클러스터가 있고 487모든 머신은 물리적 머신(DELL)이며 운영 체제는 RHEL 버전 7.9입니다.

각 데이터 노드 머신에는 12개의 디스크가 있으며 각 디스크 크기는 12T입니다.

HDP 패키지(이전에는 Horton-works, 현재는 Cloudera)에서 설치된 Hadoop 클러스터 유형

사용자는 데이터 노드 시스템에서 실행되는 느린 Spark 애플리케이션에 대해 불평합니다.

조사 후 데이터 노드 로그에 다음 경고가 표시됩니다.

2024-03-18 17:41:30,230 WARN  datanode.DataNode (BlockReceiver.java:receivePacket(567)) - Slow BlockReceiver write packet to mirror took 401ms (threshold=300ms), downstream DNs=[172.87.171.24:50010, 172.87.171.23:50010]
2024-03-18 17:41:49,795 WARN  datanode.DataNode (BlockReceiver.java:receivePacket(567)) - Slow BlockReceiver write packet to mirror took 410ms (threshold=300ms), downstream DNs=[172.87.171.26:50010, 172.87.171.31:50010]
2024-03-18 18:06:29,585 WARN  datanode.DataNode (BlockReceiver.java:receivePacket(567)) - Slow BlockReceiver write packet to mirror took 303ms (threshold=300ms), downstream DNs=[172.87.171.34:50010, 172.87.171.22:50010]
2024-03-18 18:18:55,931 WARN  datanode.DataNode (BlockReceiver.java:receivePacket(567)) - Slow BlockReceiver write packet to mirror took 729ms (threshold=300ms), downstream DNs=[172.87.11.27:50010]

위의 로그에서 warning Slow BlockReceiver write packet to mirror took xxms데이터 노드 머신 172.87.171.23,172.87.171.24등을 볼 수 있습니다.

제가 이해한 바에 따르면 비정상적으로 "느린" 것은 BlockReceiver write packet to mirrorOS 캐시나 디스크에 블록을 쓰는 데 지연이 발생할 수 있음을 나타냅니다.

그래서 저는 이 경고/예외에 대한 이유를 수집하려고 합니다. 여기에 있습니다.

  1. 운영 체제 캐시 또는 디스크에 블록을 쓸 때의 지연 시간

  2. 클러스터가 리소스 제한(메모리, CPU 또는 디스크)에 도달했거나 거의 도달하고 있습니다.

  3. 머신 간 네트워크 문제

확인 결과 보이지 않습니다.디스크또는CPU또는메모리질문, 우리는 모든 기계를 확인했습니다

네트워크 측면에서 보면 기기 자체와 관련된 특별한 문제는 보이지 않습니다.

또한 iperf3 ro를 사용하여 한 시스템에서 다른 시스템으로의 대역폭을 확인합니다.

다음은 사이의 예입니다 data-node01( data-node03 내가 이해한 바에 따르면, 내가 틀렸다면 정정해 주십시오. 대역폭은 괜찮은 것 같습니다).

데이터 노드 01에서

iperf3 -i 10 -s

[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.00  sec  7.90 GBytes  6.78 Gbits/sec
[  5]  10.00-20.00  sec  8.21 GBytes  7.05 Gbits/sec
[  5]  20.00-30.00  sec  7.25 GBytes  6.23 Gbits/sec
[  5]  30.00-40.00  sec  7.16 GBytes  6.15 Gbits/sec
[  5]  40.00-50.00  sec  7.08 GBytes  6.08 Gbits/sec
[  5]  50.00-60.00  sec  6.27 GBytes  5.39 Gbits/sec
[  5]  60.00-60.04  sec  35.4 MBytes  7.51 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-60.04  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-60.04  sec  43.9 GBytes  6.28 Gbits/sec                  receiver

데이터 노드 03에서

iperf3 -i 1 -t 60 -c 172.87.171.84

[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   792 MBytes  6.64 Gbits/sec    0   3.02 MBytes
[  4]   1.00-2.00   sec   834 MBytes  6.99 Gbits/sec   54   2.26 MBytes
[  4]   2.00-3.00   sec   960 MBytes  8.05 Gbits/sec    0   2.49 MBytes
[  4]   3.00-4.00   sec   896 MBytes  7.52 Gbits/sec    0   2.62 MBytes
[  4]   4.00-5.00   sec   790 MBytes  6.63 Gbits/sec    0   2.70 MBytes
[  4]   5.00-6.00   sec   838 MBytes  7.03 Gbits/sec    4   1.97 MBytes
[  4]   6.00-7.00   sec   816 MBytes  6.85 Gbits/sec    0   2.17 MBytes
[  4]   7.00-8.00   sec   728 MBytes  6.10 Gbits/sec    0   2.37 MBytes
[  4]   8.00-9.00   sec   692 MBytes  5.81 Gbits/sec   47   1.74 MBytes
[  4]   9.00-10.00  sec   778 MBytes  6.52 Gbits/sec    0   1.91 MBytes
[  4]  10.00-11.00  sec   785 MBytes  6.58 Gbits/sec   48   1.57 MBytes
[  4]  11.00-12.00  sec   861 MBytes  7.23 Gbits/sec    0   1.84 MBytes
[  4]  12.00-13.00  sec   844 MBytes  7.08 Gbits/sec    0   1.96 MBytes

참고 - 네트워크 카드는 빠릅니다 10G(ethtool을 통해 확인했습니다).

NIC 카드의 펌웨어 버전도 확인했습니다.

ethtool -i p1p1
driver: i40e
version: 2.8.20-k
firmware-version: 8.40 0x8000af82 20.5.13
expansion-rom-version:
bus-info: 0000:3b:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

커널 메시지( dmesg)도 확인했지만 특별한 내용은 발견되지 않았습니다.

CPU에 대한 dmesg에서

dmesg  | grep CPU
[    0.000000] smpboot: Allowing 32 CPUs, 0 hotplug CPUs
[    0.000000] smpboot: Ignoring 160 unusable CPUs in ACPI table
[    0.000000] setup_percpu: NR_CPUS:5120 nr_cpumask_bits:32 nr_cpu_ids:32 nr_node_ids:2
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=32, Nodes=2
[    0.000000]  RCU restricting CPUs from NR_CPUS=5120 to nr_cpu_ids=32.
[    0.184771] CPU0: Thermal monitoring enabled (TM1)
[    0.184943] TAA: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.184944] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.324340] smpboot: CPU0: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (fam: 06, model: 4f, stepping: 01)
[    0.327772] smpboot: CPU 1 Converting physical 0 to logical die 1
[    0.408126] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.436824] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[    0.436828] TAA CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html for more details.
[    0.464933] Brought up 32 CPUs
[    3.223989] acpi LNXCPU:7e: hash matches
[   49.145592] L1TF CPU bug present and SMT on, data leak possible. See CVE-2018-3646 and https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1tf.html for details.

관련 정보