Lakehouse, HMS / dataflow

Jeonghak Cho·2025년 7월 13일

Bigdata

목록 보기
25/30

HMS 데이터 흐름

Hive Metastore는 Hive뿐 아니라 Trino, Spark, Presto, Iceberg 등 다양한 도구들이 테이블 및 파티션 정보를 공유하기 위해 사용하는 중앙 메타데이터 저장소이다. 이 Metastore는 보통 RDBMS(MySQL, PostgreSQL 등) 에 저장되며, 그 내부에는 여러 개의 테이블이 존재한다. 이 테이블들은 Hive의 Database, Table, Column, Partition 등을 관리하는 데 사용된다.

HMS 구성 요소

구성 요소역할
TrinoSQL 쿼리 처리, Iceberg 테이블 읽기/쓰기 수행
HMSTrino의 Iceberg 카탈로그에서 메타데이터 조회
PostgreSQLHMS 내부 메타데이터 저장소
MinIOIceberg 테이블의 실제 데이터(.parquet 등) 저장

PostgreSQL 연결 정보

PostgreSQL 연결에 사용한 연결 속성이다.

속성
데이터베이스hive_metastore
사용자 아이디hive
사용자 패스워드hive

Hive Metastore 주요 테이블

테이블명역할 요약
DBS데이터베이스(스키마) 정보 저장
TBLS테이블 메타데이터 저장
SDS저장 포맷(StorageDescriptor), 컬럼 포맷, 위치 등
SERDESSerDe 관련 정보 (입출력 포맷 지정)
COLUMNS_V2테이블 및 파티션 컬럼 정보
PARTITIONS파티션 정보 저장 (파티션 값, 테이블과의 연결 등)
PARTITION_KEY_VALS실제 파티션 값 저장
PARTITION_KEYS파티션 키(컬럼명, 타입 등) 정의
PARTITION_PARAMS파티션 속성 (예: 'transient_lastDdlTime')
TABLE_PARAMS테이블 속성 저장
SD_PARAMSStorageDescriptor 속성
COLUMN_STATS_ACCURACY통계 정확도 관련 정보
TAB_COL_STATS테이블 컬럼 통계
PART_COL_STATS파티션 컬럼 통계

데이터 생성

CREATE TABLE iceberg.default.my_profile (
    id BIGINT ,
    name VARCHAR,
    age INT,
    created_at TIMESTAMP(6)
);

MinIO 버킷 확인

PostgreSQL 확인

DBS

  • NAME: default
  • 데이터베이스 이름과 경로가 저장됨

TBLS

  • TBL_NAME: mp_prfile
  • DB_ID: DBS 테이블과 연결
  • TBL_TYPE: MANAGED_TABLE 또는 EXTERNAL_TABLE

SDS (StorageDescriptor)

  • 테이블 데이터 위치 (LOCATION)
  • 저장 포맷 (InputFormat, OutputFormat)
  • 컬럼들과 연결됨 (CD_ID)

COLUMNS_V2

  • id (int), amount (double)
  • CD_ID로 SDS와 연결

PARTITION_KEYS

  • dt (string)

PARTITIONS (파티션 생성 시)

  • 예: dt='2025-07-01' 같은 파티션 생성 시 row가 추가됨
  • SD_ID를 통해 각 파티션의 저장 위치를 따로 지정 가능

PARTITION_KEY_VALS

  • '2025-07-01' 같은 실제 값 저장

참고

일억건 insert

INSERT INTO iceberg.default.my_profile
SELECT 
    i_val * 10000 + j_val AS id,
    'user_' || CAST(i_val * 10000 + j_val AS VARCHAR),
    MOD(j_val, 100) AS age,
    CURRENT_TIMESTAMP AS created_at
FROM UNNEST(SEQUENCE(0, 9999)) AS t1(i_val)
CROSS JOIN UNNEST(SEQUENCE(0, 9999)) AS t2(j_val);

0개의 댓글