Home 데이터엔지니어링 한눈에 보기2 - 하둡 프레임워크 구성
Post
Cancel

데이터엔지니어링 한눈에 보기2 - 하둡 프레임워크 구성

1. 핵심 컴포넌트

1. HDFS

데이터를 설정가능한 블록(기본값:128MB)으로 저장하며 회복성 및 병렬처리를 위해 여러대 서버에 각 블록에 복제본을 저장

  • 네임 노드 : 마스터 서버에 실행되는 프로세스로 파일 자체의 메타데이터를 모두 관리. 데이터 노드이 가용공간, 렉 지역성을 고려하여 파이프라인을 구성함
  • 데이터노드 : 클러스터에 있는 워커노드에서 실행되는 데몬으로 블록을 전달 받아서 로컬 디스크에 저장

2. YARN

서로 다른 크기의 데이터를 처리할 때 서로 다른 크기의 연산력과 메모리를 필요로 한다. 이런 요구사항을 충족시키기위해 가용 연산 자원가 워크로드를 모두 알고있는 중앙 클러스터 매니저를 관리한다. 데이터를 직접 다루진 않지만 클러스터에 분산되어 연산을 수행하는 애플리케이션을 실행하는 프레임워크

  • 리소스 메니저 : 중앙 매니저 역할을 수행
  • 노드 메니저 : 각 워커노드에 실행되는 데몬으로 사용 가능한 연산 자원과 메모리를 리소스 메니저에게 보고하고 로컬 노드에 잇는 컨테이너를 가동, 모니터링하며 관리

3. ZOOKEEPER

애플리케이션이 여러노드에 분산되어 관리되므로 공유된 파라미터 값에 대해 동의와 공유가 필요하다. 주키퍼는 회복성 있는 분산 설정 서비스로 다수결의 원칙에 따라 합의를 이끌어낸다. 랜덤하게 하나의 리더 노드가 선출되고 나머지는 팔로워 노드로 지정된다. 데이터를 저장할 때 일관성을 보장하기 위해 팔로워 서버에서 리더 서버로 전달된다.

  • 앙상블 : 주키퍼 인스턴스로 서로 다른 서버에 배포된다.(홀수개로 동작)
    • 리더 노드
    • 팔로워 노드


2. 연산 프레임워크

1. 맵리듀스

분산 데이터 프로세싱 엔진의 근간

  • 맵 : 데이터가 위치하는 곳에서 실행되어 파일에 있는 레코드를 키-값 형태로 반환
  • 셔플 : 맵 리듀스의 결과물을 네트워크를 타고 리듀스에 입력값을 전달
  • 리듀스 : 키를 기준으로 나머지 내용을 집계하여 결과를 HDFS에 저장

2. 스파크

데이터 프로세싱 분야에서 강력한 프레임워크. 필터링, 조인, 그룹핑, 집계와 같은 일반적인 연산, SQL 제공


3. SQL 분산 프레임워크

1. 하이브

HDFS에 저장된 데이터를 SQL과 비슷한 하이브QL로 쿼리할 수 있게 만든 기술

  • 메타데이터 서버 : 정형 데이터셋에 대한 정보를 데이터셋, 테이블, 뷰같은 논리적인 위계 구조로 구성해서 관리. HDFS에서 하이브 테이블은 파일을 포함한 디렉토리와 같음. (파티션도 가능) 단, 테이블 안에 모든 파일은 같은 포멧이어야 한다.
    • 관리형 테이블 : 스토리 엔진에 저장된 데이터를 하이브가 능동적으로 제어. 즉 HDFS에 디렉토리를 만듦(테이블을 삭제하면 스토리지 엔진에 저장된 데이터도 함께 삭제)
    • 외부 테이블 : 메타데이터가 변경되더라도 스토리지 엔진에 데이터는 변화 없고 데이터베이스에 있는 테이블의 메타데이터만 관리
  • 쿼리 서버 : SQL 쿼리를 실행


4. 스토리지 엔진

1. 아파치 HBase

임의 접근이 가능한 키-값 구조의 반정형 데이터를 HDFS에 저장 셀이 키 구성요소에 따라 저장. 수평 파티셔닝을 사용.

  • 리전 : 파티션
  • 셀 : 키-값 쌍의 반정형 데이터 형식으로 데이터를 저장
    • 키 : 로우키 + 컬럼패밀리(컬럼한정자) 하나의 로우에 수백만개의 컬럼 한정자가 있을 수 있음
    • 타임스탬프 : 버전을 나타냄

2. 아파치 카프카

카프카의 메시지는 바이트 배열로 된 키-값 쌍으로 구성됨.

  • 토픽 : 여러 서버(브로커)에 분산되는 메시지(레코드)
  • 프로듀서 : 클라이언트는 프로듀서를 통해 카프카 토픽의 파티션으로 메시지를 발행
  • 컨슈머: 토픽에 있는 데이터를 읽음.


5. 오케스트레이션

1. 아파치 우지

하둡에서 사용되는 작업 스케줄링 및 실행 프레임워크. XML파일로 정의. 대부부느이 액션은 런처를 통해 얀 위에서 비동기 방식으로 실행됨

  • 액션 : 기본 실행 단위
  • 워크플로우 : 연쇄적으로 실행돼야하는 액션의 묶음
  • 코디네이터 : 워크플로우를 스케줄링
  • 번들 : 그룹
This post is licensed under CC BY 4.0 by the author.