캐시 기반 네임노드 확장성 해결 방안
초록
본 논문은 HDFS의 메타데이터를 메모리에 보관하는 네임노드의 메모리 한계로 인한 확장성 문제를 캐시 메모리 기법으로 완화하는 방안을 제시한다. 파일·디렉터리 메타데이터를 자주 접근되는 부분과 덜 접근되는 부분으로 구분해, 자주 사용되는 메타데이터는 RAM에, 나머지는 SSD 기반 캐시 계층에 저장함으로써 네임노드 메모리 사용량을 최적화한다. 실험 결과, 동일한 하드웨어 환경에서 기존 대비 30% 이상의 파일 수 증가와 메타데이터 조회 지연 감소를 확인하였다.
상세 분석
HDFS는 메타데이터를 전부 NameNode의 JVM 힙에 적재함으로써 빠른 파일 경로 탐색과 블록 위치 조회를 가능하게 하지만, 메모리 용량이 포화되면 클러스터 확장이 불가능해지는 치명적인 한계가 존재한다. 논문은 이 문제를 “다계층 캐시” 구조로 접근한다. 먼저 파일 시스템 네임스페이스를 트리 구조로 분석해 접근 빈도 프로파일링을 수행한다. 최근 24시간 내에 조회된 파일·디렉터리 엔트리를 ‘핫’ 영역으로 분류하고, 나머지를 ‘콜드’ 영역으로 구분한다. ‘핫’ 영역은 기존과 동일하게 NameNode 메모리에 유지하되, 메모리 압박이 감지될 경우 LRU 기반의 eviction 정책을 적용해 가장 오래된 엔트리를 SSD 기반 캐시(예: NVMe)로 이동시킨다. 캐시된 메타데이터는 별도의 CacheManager 모듈이 관리하며, 클라이언트 요청 시 먼저 메모리 조회, 미히트 시 캐시 조회, 최종적으로 디스크(또는 원격 메타데이터 서비스) 조회 순으로 진행된다. 이 과정에서 네트워크 오버헤드를 최소화하기 위해 캐시와 NameNode 사이에 고속 RDMA 통신을 활용한다. 또한, 메타데이터 일관성을 보장하기 위해 Write-Ahead Log(WAL)와 동일한 트랜잭션 로그를 캐시에도 복제하고, 캐시에서 발생한 메타데이터 변경은 비동기적으로 NameNode 메모리와 동기화한다. 실험 환경은 64노드 클러스터(각 DataNode 12 TB HDD, NameNode 256 GB RAM)이며, 파일 수를 10 M에서 13 M까지 확장했을 때 메모리 사용량이 220 GB에서 190 GB로 감소하고, 평균 파일 조회 지연이 12 ms에서 8 ms로 개선되었다. 이러한 결과는 캐시 계층이 메모리 포화 상태를 효과적으로 완화하고, 동시에 응답 시간에 큰 영향을 주지 않음을 입증한다. 논문은 또한 캐시 용량, eviction 정책, 그리고 메타데이터 업데이트 빈도에 따른 성능 트레이드오프를 정량적으로 분석하고, 최적 파라미터 설정 가이드를 제공한다.
댓글 및 학술 토론
Loading comments...
의견 남기기