융무의 기술블로그
article thumbnail
Published 2023. 4. 1. 15:07
Hadoop & HDFS Data Engeneering/Hadoop

실무에 사용한 데이터 엔지니어링 스킬에 대한 정리내용입니다.

개인적인 기록을 위해 작성하였습니다.

https://github.com/mjs1995/muse-data-engineer/blob/main/doc/Batch%20Processing/hadoop_hdfs.md

 

GitHub - mjs1995/muse-data-engineer: 데이터 엔지니어로 성장하기

데이터 엔지니어로 성장하기. Contribute to mjs1995/muse-data-engineer development by creating an account on GitHub.

github.com


Hadoop

https://www.oreilly.com/library/view/data-lake-for/9781787281349/8df0cc52-432d-4233-9b6e-8f9649280b37.xhtml

  • 2005년 더크 커팅이 오픈 소스로 공개한 하둡은 분산 저장 파일시스템인 HDFS와 분산 병렬 처리를 담당하는 맵리듀스로 구성되어 있습니다. 하둡이 나온 후 이를 기반으로 피그, 하이브, HBase, 스쿱, 플룸 등의 오픈 소스 기술이 등장했고, 이들을 모두 결합한 빅데이터 기술은 통칭하여 하둡 에코시스템이라고 부르게 되었습니다.
  • 아파치 하둡 플랫폼(Hadoop)은 막대한 볼륨의 데이터를 저장할 수 있는 구글 파일 시스템과 이러한 데이터를 빠르고 안정적으로 처리할 수 있는 구글 맵리듀스(Google MapReduce) 기술의 오픈소스 버전으로 많은 기업들이 빠르게 증가하는 데이터(구조적, 반구조적, 비구조적)를 관리하기 위해 하둡을 채택했습니다.
  • 하둡은 잡을 맵 태스크와 리듀스 태스크로 나누어 실행하며 각 태스크는 YARN을 이용하여 스케줄링되고 클러스터의 여러 노드에서 실행됩니다. 특정 노드의 태스크 하나가 실패하면 자동으로 다른 노드를 재할당하여 다시 실행됩니다.
  • 구성 요소
    • Hadoop Common
      • 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈
    • Hadoop HDFS
      • 분산 파일시스템으로 여러 개의 서버를 하나의 서버처럼 묶어서 데이터를 저장
    • Hadoop YARN
      • 하둡의 클러스터 자원 관리 시스템, 클러스터의 자원을 요청하고 사용하기 위해 API를 제공
    • Hadoop Mapreduce
      • 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈
  • 핵심 원리
    • Failure Tolerance (장애 허용)
    • Load Balancing (로드 밸런싱)
    • Data Loss (데이터 로스)
  • 이점
    • Resilience (탄력성)
    • Scalability(확장성) : 어떠한 클러스터 환경에서도 적용 가능하다.
    • Low Cost(저비용)
    • Speed(속도)
    • Data Diversity(데이터 다양성)

HDFS

  • 네트워크로 연결된 여러 머신의 스토리지를 관리하는 파일시스템. HDFS(Hadoop Distributed FileSystem)라는 분산 파일시스템을 제공합니다.
    https://www.oreilly.com/library/view/distributed-computing-in/9781787126992/3275691a-477f-4e3a-a00c-9a64bda93b16.xhtml
    • HDFS 클러스터는 마스터-워커 패턴으로 동작하는 두 종류의 노드, 마스터인 하나의 네임노드와 워커인 여러 개의 데이터노드로 구성되어 있으며 네임노드는 파일시스템의 네임스페이스를 관리합니다.
    • 네임 노드 : 데이터 노드들의 위치나 데이터 내용에 대한 구성을 가진 한 개의 노드로 구성
    • 데이터 노드 : 데이터 수집된 다량의 내용을 가진 데이터 노드
    • 메타데이터 관리 : 메타데이터는 파일이름, 파일크기, 파일생성시간, 파일접근권한, 파일 소유자 및 그룹 소유자, 파일이 위치한 블록의 정보 등으로 구성됩니다. 각 데이터노드에서 전달하는 메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리
  • 하둡 디스크 상의 거대한 연속 데이터 블럭을 스캔하는 데 최적화된 분산, 무 정지 파일시스템. HDFS는 클러스터에 분산되어 데이터 저장소의 수평확장성을 제공합니다. HDFS 파일 블럭은 하드 드라이브나 전체 시스템에 문제가 생겼을 때 데이터 유실을 막기 위해 클러스터 상에 복제됩니다.
  • 3가지 특징
    • Data Locality (데이터 지역성) : 하둡은 HDFS 내의 입력 데이터가 있는 노드에서 맵 태스크를 실행할 때 가장 빠르게 작동합니다. 클러스터의 중요한 공유 자원인 네트워크 대역폭을 사용하지 않는 방법
    • Replicated Blocks (복제 블럭)
    • High Probability (높은 가능성)
  • HDFS 설계
    • 범용 하드웨어로 구성된 클러스터에서 실행되고 스트리밍 방식의 데이터 접근 패턴으로 대용량 파일을 다룰 수 있도록 설계된 파일시스템
    • 설계 특성
      • 매우 큰 파일
      • 스트리밍 방식의 데이터 접근
      • 범용 하드웨어
        • 하둡은 노드 장애가 발생할 확률이 높은 범용 하드웨어(여러 업체에서 제공하는 쉽게 구할 수 있는 하드웨어)로 구성된 대형 클러스터에서 문제없이 실행되도록 설계
    • HDFS가 잘 맞지 않는 응용 분야
      • 빠른 데이터 응답시간
        • HDFS는 높은 데이터 처리량을 제공하기 위해 최적화되어 있고 이를 위해 응답 시간을 희생합니다. HBase가 하나의 대안이 될 수 있습니다.
      • 수많은 작은 파일
      • 다중 라이터와 파일의 임의 수정
        • HDFS는 단일 라이터로 파일을 씁니다. 한 번 쓰고 끝나거나 파일의 끝에 덧붙이는 것은 가능하지만 파일에서 임의 위치에 있는 내용을 수정하는 것은 허용하지 않으며 다중 라이터도 지원하지 않습니다.
  • HDFS 고가용성
    • 네임노드는 여전히 단일 고장점(single point of failure - SPOF), 네임노드는 메타데이터와 파일 블록의 매핑 정보를 보관하는 유일한 저장소이기 때문에 네임노드에 장애가 발생하면 맵리듀스 잡을 포함 하여 모든 클라이언트가 파일을 읽거나 쓰거나 조회할 수 없게 됩니다.
    • 새로운 네임노드는 네임스페이스 이미지를 메모리에 로드하고 -> 에디트 로그를 갱신하고 -> 전체 데이터노드에서 충분한 블록 리포트를 받아 안전 모드를 벗어날 때까지 그 어떤 요청도 처리하지 못합니다.
    • HDFS 고가용성(high availability -HA)을 지원합니다. 고가용성은 활성대기상태로 설정된 한 쌍의 네임노드로 구현되며 활성네임노드에 장애가 발생하면 대기 네임노드가 그 역할을 이어받아 큰 중단 없이 클라이언트의 요청을 처리합니다.
  • 장애복구와 펜싱
    • 대기 네임노드를 활성화시키는 전환 작업은 장애복구 컨트롤러라는 새로운 객체로 관리됩니다.
    • 장애복구는 정기적인 유지관리를 위해 관리자가 수동으로 초기화할 수 있습니다.
    • 우아한 장애복구(graceful failover) : 장애복구 컨트롤러는 두 개의 네임노드가 서로 역할을 바꾸게 하는 방법으로 전환 순서를 제어할 수 있습니다.

Reference

'Data Engeneering > Hadoop' 카테고리의 다른 글

[Hadoop] Hadoop ECO System  (0) 2023.05.28
Mapreduce & YARN  (0) 2023.04.02
profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!