콘텐츠로 이동

Hadoop/Tez: 특정 노드 네트워크 RX Error로 인한 작업 지연 이슈

Hadoop 클러스터에서 ORC 변환 등 대규모 데이터 처리 작업을 수행할 때, 특정 노드가 포함되면 작업 속도가 비정상적으로 느려지는 현상이 발생할 수 있습니다. 본 문서에서는 네트워크 수신 에러(RX Error)가 분산 컴퓨팅에 미치는 영향과 조치 과정을 정리합니다.


1. 현상 (Symptom)

  • Tez Job 지연: 평소보다 수 배 이상의 시간이 소요되거나, 특정 태스크(Task)들만 99%에서 멈춰 있는 'Straggler' 현상 발생.
  • 특정 노드 편중: YARN UI 확인 결과, 유독 특정 서버(DataNode)에서 실행되는 컨테이너의 처리 속도가 현저히 느림.
  • 재시도 반복: 해당 노드의 태스크가 실패하고 다른 노드에서 재실행(Speculative Execution)되면서 전체 작업 완료가 늦어짐.

2. 원인 파악 (Diagnosis)

2.1 OS 레벨 네트워크 상태 확인

가장 먼저 의심되는 노드에 접속하여 네트워크 인터페이스 상태를 확인합니다.

# 인터페이스 통계 확인
ip -s link show eth0
# 또는 구형 방식
ifconfig eth0
  • 확인 결과: RX errors, RX dropped, RX overruns 수치가 실시간으로 가파르게 상승하는 것을 확인.

2.2 왜 ORC 변환/Tez에서 두드러지는가?

  1. 집중적인 데이터 셔플(Shuffle): Tez 엔진은 DAG 기반으로 중간 데이터를 메모리나 로컬 디스크에 쓰고 노드 간에 빈번하게 주고받습니다.
  2. 패킷 재전송(Retransmission): RX Error가 발생하면 TCP 레벨에서 패킷 손실로 간주하고 재전송을 시도합니다. 이는 네트워크 지연 시간(Latency)을 기하급수적으로 늘립니다.
  3. ORC 압축 부하: ORC는 칼럼 지향 저장소로 변환 시 많은 데이터를 읽고 써야 하므로 I/O와 네트워크 사용량이 동시에 급증하며 숨어있던 하드웨어 결함이 드러나게 됩니다.

3. 해결 방법 (Resolution)

3.1 단기 조치: 노드 제외 (Decommission/Exclude)

운영 중인 클러스터에서 작업 영향을 최소화하기 위해 해당 노드를 작업 대상에서 제외합니다.

  • yarn.resourcemanager.nodes.exclude-path에 설정된 파일에 해당 호스트명 추가.
  • yarn rmadmin -refreshNodes 실행.

3.2 하드웨어 점검

RX Error는 소프트웨어보다 물리적 결함일 확률이 매우 높습니다.

  • 케이블 교체: 서버와 스위치를 잇는 LAN 케이블 교체.
  • 포트 변경: 스위치 허브의 다른 포트로 연결 변경.
  • NIC(랜카드) 점검: 랜카드 불량인 경우 부품 교체.

3.3 OS 및 드라이버 튜닝 (소프트웨어적 접근)

하드웨어 문제가 아닐 경우 커널 파라미터나 드라이버 설정을 조정해 봅니다.

  • Ring Buffer 크기 확장:

    # 현재 설정 확인
    ethtool -g eth0
    # 최대치로 확장
    ethtool -G eth0 rx 4096 tx 4096
    

  • Interrupt Coalescing 조정: CPU 부하 분산을 위해 인터럽트 처리 주기 조정 (ethtool -C).


4. 교훈 (Lessons Learned)

  • 모니터링의 중요성: CPU/Memory뿐만 아니라 OS 레벨의 네트워크 에러(net.errors) 수치에 대한 임계치 알람이 필수적입니다.
  • Straggler 관리: 분산 환경에서는 성능이 떨어지는 단 하나의 노드가 전체 시스템의 가용성을 훼손할 수 있음을 인지하고, 문제가 발생한 노드를 빠르게 격리하는 판단이 중요합니다.