본문 바로가기
빅데이터

[빅데이터][스크랩] 네이버의 하둡 클러스터 운영 주의 사항

by hs_seo 2020. 3. 24.

네이버에서 발표한 자료를 통해 하둡 클러스터를 운영하면서 주의해야 할 사항에 대해서 알아보겠습니다.

네임노드

네임노드는 힙메모리에 HDFS에 존재하는 모든 파일의 메타정보를 저장하고 있습니다. 네임노드 JVM의 힙메모리 사이즈(만 블록당 1G의 메모리가 사용)에 따라 전체 파일, 블록의 개수가 제한됩니다.

 

파일, 블록이 많이 생성되어 메모리의 한계치에 도달하면 JVM의 힙메모리를 늘려야 합니다. 하지만 메모리 설정을 변경하려면 네임노드를 재기동해야 하고, 네임노드는 재기동 할 때 블록 정보를 재구축하기 위해 fsimage, edits 파일을 읽어서 블록정보를 재구축합니다. 또한 데이터노드로 부터 블록 정보를 받아서 결과를 연동합니다. 이 과정에서 파일 개수가 많을수록 재기동에 걸리는 시간이 길어지고, 이 시간 동안 클러스터의 운영이 중단됩니다.

파일 개수를 줄이는 방법

  • Hadoop Archive 이용
    • 하둡은 har 기능을 제공하여 여러 개의 파일을 하나로 묶을 수 있습니다.
  • 사용하지 않는 파일 정리
    • 파일의 접근시간을 이용하여 접근 시간이 오래된 파일을 정리합니다.
      • ls명령어의 -u 옵션을 이용하여 접근 시간(access time)을 확인할 수 있습니다.
      • 이 방법은 파일이 많으면 네임노드에 부하를 줄 수 있습니다.
      • hadoop fs -ls -u /user/
    • oiv(offline fsimage viewer)를 이용하여 접근 시간을 확인할 수 있습니다.
      • 네임노드의 현재 상태를 파일로 저장한 내용을 분석하여 접근시간을 확인합니다.
      • hdfs oiv
  • HDFS 연합(Federation) 이용
    • HDFS 연합 기능은 디렉토리별로 여러 개의 네임노드를 생성하는 방법입니다.
      • hdfs:///user, hdfs:///datas, hdfs:///temps 같은 3개의 디렉토리를 각각의 네임노드로 서비스합니다.
      • 각 디렉토리간에는 cp, mv를 할 수 없습니다. distcp를 이용하여 파일을 옮겨야 합니다.
  • 하이브 머지(merge) 기능 이용
    • 하이브는 최종 작업파일의 사이즈를 확인하여, 지정한 기준이하의 파일을 하나의 파일로 묶을 수 있습니다.
      • Map, Reduce 작업 이후 Merge 작업이 추가적으로 생성되어 결과파일을 머지합니다.

클러스터 장애 대응

네임노드 장애

HDFS는 네임노드가 SPOF로 네임노드에 장애가 발생하면 클러스터가 중단됩니다. 이를 회피하기 위해서 주키퍼를 이용해 HDFS를 HA 구성으로 설정하는 것이 좋습니다.

사례 1: 데이터노드를 한 번에 재시작하여 네임노드에 장애가 발생함

데이터 노드를 한 번에 재시작하여 네임노드에 데이터노드의 블록리포팅과 블록리포팅을 처리하면서 남기는 INFO 로그, 주키퍼의 네임노드 헬스모니터링 RPC포트와 블록리포팅 포트가 동일하여 응답시간이 초과되면서 네임노드에 장애가 발생하였습니다.

HDFS의 로그를 TRACE로 변경하고, 주키퍼의 RPC포트를 변경하였습니다.

노드매니저 장애

사례 1: 리소스매니저 이전으로 정보가 제대로 반영되지 않아서 장애 발생

HA구성된 리소스매니저중 하나를 변경할 때 노드매니저가 중단된 리소스매니저의 정보를 계속 캐슁하여 노드매니저에 장애가 발생하였습니다.

액티브 리소스매니저와 스탠바이 리소스매니저를 순서대로 변경하여 작업의 안정성을 확보하는 것이 좋습니다. 모든 작업은 스테이지에서 테스트 후 운영에 적용하는 것이 좋습니다.

리소스매니저 장애

사례 1: 주키퍼가 응답하지 않아서 장애가 발생

리소스매니저가 작업의 정보를 주키퍼에 보관할 때 주키퍼에 너무 많은 데이터가 보관되어 주키퍼가 응답을 하지 않으면서 리소스매니저에 장애가 발생하였습니다.

완료된 애플리케이션 정보는 저장하지 않고, 주키퍼의 버퍼 설정을 변경하였습니다.

클러스터의 노드 OS 업그레이드

클러스터를 구성하는 노드의 OS 업그레이드는 다음을 고려하여 진행하는 것이 좋습니다.

  • YARN 컨테이너 실행 환경
    • 컨테이너가 실행되는 OS 환경 변수 설정에 유의하여야 합니다. OS별로 /usr/bin/과 같은 실행 명령어의 위치가 다르기 때문입니다.
  • 하둡 작업 리소스
    • 하둡으로 실행되는 작업은 어떤 OS에서 실행될지 정확하게 알 수 없습니다. OS 버전에 맞는 작업 리소스가 적용될 수 있도록 설정해야 합니다.
  • OS에 의존하는 작업
    • OS에 설치된 기본 명령어의 버전에 따라 작업 결과가 달라질 수 있습니다. 각 버전에서 작업 결과를 확인해야 합니다.

문제의 가능성이 있는 작업은 사전에 여러 방면으로 테스트를 해보고, YARN 컨테이너의 작업 환경을 통일하는 것이 좋습니다. 클러스터에 장애가 발생하지 않도록 클러스터에서 장비를 안전하게 제거 후 업그레이드를 진행하는 것이 좋습니다.

참고

 

[234]멀티테넌트 하둡 클러스터 운영 경험기

멀티테넌트 하둡 클러스터 운영 경험기

www.slideshare.net

 

반응형