image.png

하둡 에코시스템 중 데이터를 모델링하고 프로세싱할때 가장 많이 사용하는 데이터 웨어하우징 솔루션

RDB의 테이블과 유사한 형태로 HDFS에 저장된 데이터 구조를 정의하는 방법을 제공하고, 이 데이터를 대상으로 SQL과 유사한 HiveQL을 이용해 데이터를 조회할 수 있도록 한다.

위 그림에서 가장 핵심은 MetaStore임.

HiveMetaStore

HDFS가 갖고 있는 데이터에 논리적 구조를 도입시켜주는게 MetaStore이다.

HDFS 파일에 "이게 어떤 데이터인지" 설명을 붙여주는 중앙 메타데이터 저장소


본질적인 문제

HDFS는 파일시스템이다. 그냥 바이트 덩어리를 저장할 뿐이고, 그 안에 뭐가 들어있는지는 관심없음.

HDFS 입장:
/warehouse/users/part-0000.parquet
→ "그냥 파일임. 안에 뭐가 있는지 모름"

사람 입장:
→ "이게 users 테이블이고, user_id, name, email 컬럼이 있어"

간극을 메워주는 것이 Metastore임.


Metastore가 저장하는 것

데이터베이스 정보
└── 테이블 정보
    ├── 컬럼명 / 타입 / 코멘트
    ├── 파티션 정보
    ├── 저장 포맷 (Parquet, ORC, CSV...)
    ├── HDFS 실제 경로 (Location)
    ├── SerDe (직렬화/역직렬화 클래스)
    └── 테이블 속성 (생성일, 소유자 등)

구체적인 예:

테이블: logs
├── 컬럼
│   ├── user_id: BIGINT
│   ├── action:  STRING
│   └── ts:      TIMESTAMP
├── 파티션 키: date (STRING)
├── 포맷: PARQUET
├── Location: hdfs://namenode/warehouse/logs
└── 파티션 목록
    ├── date=2024-01-01 → /warehouse/logs/date=2024-01-01
    ├── date=2024-01-02 → /warehouse/logs/date=2024-01-02
    └── ...