2016년 4월 5일 화요일

[hadoop] 하둡 기본 용어


하둡에서 사용되는 기본 용어들을 정리하였습니다.
('시작하세요! 하둡 프로그래밍' 을 참고하였습니다.)

하둡

  • 하둡(Hadoop)
    • 대용량 데이터를 분산처리할 수 있는 자바 기반의 오픈소스 프레임워크
  • HDFS(Hadoop Distributed File System)
    • 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템
  • 네임노드(NameNode)
    • HDFS의 모든 메타데이터를 관리하고, 클라이언트가 HDFS에 저장된 파일에 접근할 수 있게 해준다.
    • 모든 파일과 데릭터리에 대한 메타 데이터 정보인 네임스페이스를 관리한다.
    • 데이터노드와 하트비트를 유지하며, 데이터 노드의 상태를 파악하고, 블록 리포트를 이용해 블록의 위치도 파악한다. (블록 관리)
    • HDFS에 데이터를 읽고, 쓰고, 삭제하는 모든 트랜잭션과 복제 데이터에 대한 배치도 네임노드에서 관리한다.
  • 보조네임노드(SecondaryNameNode) 
    • 주기적으로 네임노드의 파일 시스템 이미지 파일을 갱신하는 역할을 수행한다.

  • 데이터노드(DataNode)
    • HDFS에 데이터를 입력하면 입력 데이터는 32MB(지정한 사이즈)의 블록으로 나눠져 여러 대의 데이터노드에 분산되어 저장된다. (블록 저장소 역할)
    • 데이터를 로컬 파일 시스템에 저장하고, 데이터에 대한 제어 요청이 왔을때만 데이터를 전송한다.
  • 파일 시스템 이미지(fsImage)
    • HDFS의 네임스페이스(디렉터리명, 파일명, 상태 정보)와 파일에 대한 블록 매핑 정보를 저장하는 파일
  • 에디트로그(editLog)
    • HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일
  • 잡트래커(JobTracker)
    • 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링한다.
  • 태스크트래커(TaskTracker)
    • 사용자가 설정한 맵리듀스 프로그램을 실행하며, 하둡의 데이터노드에서 실행되는 데몬이다.
    • 이때 map task와 reduce task란 사용자가 설정한 map과 reduce 프로그램이다.
  • YARN (Yet Another Resource Negotiator)
    • 하둡 2.0 버전의 가장 큰 변화
    • 차세대 맵리듀스 프레임워크. MRv2 혹은 맵리듀스2.0이라고도 한다.
    • YARN은 맵리듀스 프레임워크가 맵리듀스 애플리케이션 외에도 분산 환경에서 다양한 애플리케이션을 수용할 수 있는 애플리케이션 서버로 진화하는 모습을 보여준다.
    • YARN에서는 기존의 잡 트래커의 기능을 리소스 매니저와 애플리케이션 마스터로 분리했다.
  • 리소스 매니저(Resource Manager: RM)
    • 애플리케이션에 할당해야 하는 클러스터의 리소스를 관리
    • YARN의 마스터 역할
    • 클라이언트가 실행한 애플리케이션이 필요한 전체 클러스터의 리소스(CPU, 디스크, 네트워크)를 관리하며, 이를 위해 내부적으로 스케쥴러와 애플리케이션 매니저를 실행한다.
      • 스케쥴러(Scheduler)
        • 노드 매니저와 통신하며, 필요한 리소스에 대한 스케쥴링을 수행한다.
        • 이때 스케쥴링은 FIFO와 커패시티 스케줄러 중 하나를 선택할 수 있으며, 기본 스케줄러는 FIFO를 사용한다.
        • 참고로 페어 스케줄러는 아직 지원하지 않는다.
      • 애플리케이션 매니저(Application Manager)
        • 애플리케이션 마스터의 상태를 관리한다.
        • 애플리케이션 마스터의 실행, 모니터링, 재실행과 같은 기능을 수행한다.
  • 노드 매니저(Node Manager)
    • 애플리케이션 컨테이너를 실행하고, 서버의 리소스가 어떻게 사용되고 있는지 모니터링한다.
    • 노드 매니저는 데이터 서버가 설치되어 있는 서버에서 실행되며, 리소스 매니저와 지속적으로 통신하며 자신의 상태를 리포트해준다.
  • 애플리케이션 마스터(Application Master: AM)
    • 잡의 스케줄링과 모니터링 담당
    • 하나의 애플리케이션을 관리하는 마스터 역할을 수행한다.
    • 태스크 실행, 태스크의 진행 상태 및 모니터링, 태스크 장애 처리와 같은 기능을 제공한다.
    • 이때 태스크는 노드 매니저가 실행한 애플리케이션 컨테이너에서 실행된다.
    • 또한 리소스 매니저와 주기적으로 통신하며 필요한 리소스를 할당받는다.
    • 하둡 공식 사이트에서는 애플리케이션 ㅁ스터가 리소스 매니저와 리소스를 협상(negotiate)한다고 표현하는데, YARN의 마지막 의미인 Negotiator가 애플리케이션 마스터의 기능에서 유래된 것을 예상할 수 있다.

맵리듀스

  • 맵리듀스(MapReduce)
    • 맵리듀스 프로그래밍 모델은 과거부터 사용하던 알고리즘으로 맵(map)과 리듀스(reduce)라는 두 개의 메서드로 구성된 알고리즘이다.
    • 맵리듀스 프레임워크는 이러한 알고리즘을 이용해 개발된 프레임워크이며, 대규모 분산 컴퓨팅 혹은 단일 컴퓨팅 환경에서 대량의 데이터를 병렬로 분석할 수 있게 한다.
  • 맵리듀스 잡(MapReduce Job)
    • 클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은 잡(job)이라는 하나의 작업 단위로 관리된다.
  • 입력 스플릿(Input split)
    • 하나의 맵에서 처리해야 하는 입력 파일의 크기
  • 매퍼(Mapper)
    • 맵리듀스 프로그래밍 모델에서 맵 메서드의 역할을 수행하는 클래스
    • 매퍼는 키와 값으로 구성된 입력 데이터를 전달받아 이 데이터를 가공하고 분류해서 새로운 데이터 목록을 생성한다.
  • 리듀서(Reducer)
    • 맵리듀스 프로그래밍 모델에서 리듀스 메서드의 역할을 수행한느 클래스
    • 리듀서는 맵 태스크의 출력 데이터를 입력 데이터로 전달받아 집계 연산을 수행한다.
  • 셔플(Shuffle)
    • 맵 태스크와 리듀스 태스크 사이의 데이터 전달 과정이다.
  • 콤바이너(Combiner)
    • 콤바이너 클래스는 매퍼의 출력 데이터를 입력 데이터로 전달받아 연산을 수행한다.
    • 이러한 연산을 통해 셔플할 데이터의 크기를 줄이는데 도움을 준다.
  • 파티셔너(Partitioner)
    • 파티셔너는 맵 태스크의 출력 데이터가 어떤 리듀스 태스크로 전달될지를 결정한다.