[Hadoop] HDFS 대한 이해

HDFS
 - HDFS(Hadoop Distributed File System) 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할  있게 설계된 파일 시스템이다. 네트워크로 연된 여러 머신의 스토리지를 관리하는 파일 시스템을 분산 파일 시스템이라고 한다.


1. 특징
  • 매우 파일을 저장할 있다.
  • 스트리밍 방식의 데이터 접근
  • 범용 하드웨어
  • 빠른 데이터 응답시간을 요구하는 애플리케이션과 맞지 않는다.
  • 수많은 작은 파일을 저장이 필요한 경우 맞지 않는다.
  • 다중 라이터와 파일의 임의 수정이 불가능하다. HDFS 단일 라이터로 파일을 쓴다. 한번 쓰고 끝나거나 파일의 끝에 덧붙이는 것은 가능하지만 내용을 수정하는 것을 허용하지 않고 다중 라이터는 허용하지 않는다.
  • 블록 구조의 파일 시스템이다.
  • 마스트 - 슬레이브 아키텍처로 구성되어 있다.

2. 블록
  • HDFS에서의 파일은 블록 크기로 분리되어 서로 다른 노드에 저장
    • 기본 블록 크기는 64MB (하둡 2.0부턴 128MB 많이 사용)
    • 일반적으로 100개의 블록을 저장할 경우, 1GB 메모리가 필요하다.
    • 블록으로 나누어 저장하다보니 단일 디스크보다 파일을 보관할 있음, 만약 블록보다 작은 크기의 파일이 들어오면 해당 크기 만큼만 사용
  • 복제 단위
    • 노드간 데이터 복사는 블록 단위로
  • HDFS 블록 사이즈가 64 또는 128MB 처럼 이유는
    • seek time 감소
    • 네임노드가 유지하는 메타데이터의 크기 감소
    • 클라이언트와 네임노드의 통신 감소, 클라이언트가 HDFS 저장된 파일을 접근할 네임노드에서 해당 파일을 구성하는 블록의 위치를 조회하기 때문에 블록이 크면 접근 횟수가 감소한다.
  • 파일 분리
    • 256MB 파일은 64M 개의 블록으로 분리 되어 저장 ( 4개의 파일로 분리 저장 )
    • 블록 크기보다 작은 파일은 단일 블록으로 저장( 블록 파일의 크기는 실제 파일 크기임 )

3. MASTER - SLAVES 구조
  • 마스터 장치와 슬레이브 장치가 효율적으로 데이터를 주고 받을 있도록 한다. 하향 데이터를 전송하는 마스터 장치는 슬레이브 장치로 전송할 데이터를 모아 단일 전송 프레임으로 만들어 일괄 전송하고 슬레이브 장치는 자신의 데이터만을 선별 수신한 전송 프레임을 슬레이브 장치로 전달한다. 또한, 슬레이브 장치 중에서 매니저 슬레이브 장치를 설정하고, 매니저 슬레이브 장치는 일반 슬레이브 장치들이 마스터 장치로 보내는 상향 데이터를 수집하여 단일 전송 프레임으로 만들어 마스터 장치로 일괄 전송한다. 이에 따라 증설장치를 연결하여 사용할 있는 피엘시(PLC) 시스템과 같이 마스터-슬레이브 구조를 갖는 각종 시스템에서 통신 트래픽을 감소시킬 있고, 마스터 장치의 부하를 감소시켜 처리시간을 줄일 있어 더욱 신뢰성 높은 시스템을 구현할 있게 된다.
4. 구조 ( 하둡 1.x )
  • NameNode
    • 메타데이터 관리
      • NameNode 파일 시스템을 유지하기 위한 메타메이터를 관리한다. 메타데이터는 파일 시스템 이미지(파일명, 디렉터리, 크기, 권한) 파일에 대한 블록 매핑 정보로 구성된다. 네임노드는 클라이언트에게 빠르게 응답할 있게 메모리에 전체 메타데이터를 로딩해서 관리한다.
    • DataNode 모니터링
      • DataNode NameNode에게 3초마다 하트비트 메시지를 전송한다. 하트비트는 데이터노드 상태 정보와 데이터보느에 저장돼 있는 블록의 목록(blockreport) 구성된다. 그리고 일정기간 동안 하트비트를 전송하지 않는 데이터노드는 장애가 발생한 서버로 판단한다.
    • 블록관리
      • NameNode 장애가 발생한 DataNode 발견하면 해당 DataNode 블록을 새로운 DataNode 복제한다. 또한 용량이 부족한 DataNode 있다면 용량에 여유가 있는 DataNode 블록을 이동시킨다.
      • NameNode 블록의 복제본 수도 관리한다. 만약 복제본 수와 일치하지 않는 블록이 발견될 경우 추가로 블록을 복제하거나 삭제해준다.
    • 클라이언트 요청 접수
      • 클라이언트가 HDFS 접근을 하려면 반드시 NameNode 먼저 접속을 해야한다.
      • HDFS 파일을 저장할 경우 기존 파일의 저장 여부와 권한 확인 절차를 거쳐서 저장을 승인한다
      • HDFS 저장된 파일을 조회하는 경우 블록의 위치 정보를 반환한다.
    • SPOF(Single Point of Failure) 존재
      • 시스템 구성 요소 중에서 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다다른 말로단일 장애점이라고 한다.
  • DataNode
    • 블록들을 저장 (즉, 파일의 일부를 저장)
    • 하나의 완전한 파일은 여러 노드에 블록으로 분리 되어 저장


※참고
  • 시작하세요! 하둡프로그래밍 빅데이터 분석을 위한 하둡 기초부터  YARN까지 - 위키북스 - 정재화 지음
  • https://www.opentutorials.org/module/2926/17055
  • http://www.databaser.net/moniwiki/wiki.php/Hadoop%EC%9D%98SecondaryNamenode%EB%8A%94%EB%B0%B1%EC%97%85%EC%9A%A9%EC%9D%B4%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4

댓글

가장 많이 본 글