<@U0A71G31CDV> starrocks 를 k8s 로 띄우는데 internal 카탈...
# questions-and-troubleshooting
s
@Rocky starrocks 를 k8s 로 띄우는데 internal 카탈로그 쓰면 메타데이터는 아이스버그에 저장이 돼?
r
아니요, StarRocks의 *Internal Catalog(기본 카탈로그)*를 사용할 때 메타데이터나 데이터는 Iceberg 형식으로 저장되지 않습니다. StarRocks의 아키텍처에서 내부 카탈로그와 Iceberg의 관계를 정리해 드립니다. 1. Internal Catalog의 메타데이터 및 데이터 저장 방식 K8s 환경에서 StarRocks를 띄울 때, Internal Catalog(
default_catalog
)에 생성되는 테이블은 StarRocks의 *자체 엔진용 고성능 포맷*을 사용합니다. * 메타데이터: FE(Front-End) 노드의 메모리와 디스크(BDBJE라는 임베디드 DB 사용)에 저장됩니다. * *Shared-Data 모드(Cloud-Native)*인 경우: 메타데이터는 S3나 HDFS 같은 객체 스토리지에 StarRocks 고유 포맷으로 저장되지만, 이 역시 Iceberg와는 무관합니다. * 데이터: BE(Back-End) 또는 CN(Compute Node)의 로컬 디스크나 객체 스토리지에 StarRocks 전용 세그먼트(Segment) 파일 형식으로 저장됩니다. 2. Iceberg를 사용하고 싶은 경우 만약 메타데이터와 데이터를 Iceberg 형식으로 관리하고 싶다면, *Iceberg Catalog*를 별도로 생성해야 합니다. * StarRocks v2.4부터 Iceberg 외부에 저장된 데이터를 조회할 수 있고, v3.1부터는 `INSERT INTO`를 통해 StarRocks에서 Iceberg 테이블로 데이터를 직접 써넣을 수도 있습니다. * 이 경우 메타데이터는 Iceberg가 사용하는 Metastore(Hive Metastore, AWS Glue, Tabular 등)에 저장되고, 데이터는 S3/HDFS에 Iceberg 포맷(Parquet/Avro 등)으로 저장됩니다. 3. K8s에서의 차이점 * Internal Catalog 사용 시: FE 노드를 위해 *Persistent Volume(PV)*이 반드시 필요합니다. FE가 재시작되어도 BDBJE에 저장된 메타데이터가 유지되어야 하기 때문입니다. * Iceberg Catalog 사용 시: StarRocks는 외부 메타데이터를 단순히 참조(Catalog)하는 역할만 하며, 실제 메타데이터의 소유권은 외부 Metastore가 가집니다. 결론적으로: StarRocks 내부 테이블(Internal Catalog)은 성능 극대화를 위해 Iceberg가 아닌 *StarRocks 전용 스토리지 포맷*을 사용합니다. Iceberg 저장 기능을 원하신다면 `CREATE EXTERNAL CATALOG ... PROPERTIES ("type" = "iceberg", ...)`를 통해 Iceberg 카탈로그를 구성하셔야 합니다. Referencesquick_start/shared-data.mdadministration/Meta_recovery.mddeployment/shared_data/hdfs.md
s
@Rocky 메타데이터 유실되면 어떻게돼
r
StarRocks에서 메타데이터는 클러스터의 '뇌'와 같습니다. 메타데이터가 유실되면 단순히 설정이 사라지는 것이 아니라, 데이터의 위치와 구조를 알 수 없게 되어 클러스터 전체가 마비됩니다. 상세한 영향과 복구 방법은 다음과 같습니다. 1. 메타데이터 유실 시 발생하는 일 * 서비스 중단: FE(Front-End) 노드가 정상적으로 시작되지 않거나, 리더 선출(Leader Election)에 실패하여 쿼리 실행 및 데이터 적재가 불가능해집니다. * 데이터 접근 불가: 실제 데이터(Data)는 BE(Back-End) 노드에 남아 있더라도, 메타데이터(테이블 스키마, 파티션 정보, 데이터 파일 매핑 등)가 없으면 BE에 저장된 데이터가 어느 테이블의 것인지 알 수 없어 조회가 불가능합니다. * K8s 환경의 특수성: 만약 FE용 *Persistent Volume(PV)*이 삭제되고 별도의 백업(Image 파일 등)이 없다면, 클러스터를 처음부터 다시 구성해야 할 수도 있습니다. 2. 복구 방법 (상황별 대응) StarRocks는 메타데이터 보호를 위해 *BDBJE*(Berkeley DB Java Edition)를 사용하여 저널(Journal) 로그를 기록합니다. * 일부 저널 오류 시: 특정 저널 ID에서 오류가 발생한 경우, `fe.conf`에
metadata_journal_skip_bad_journal_ids
설정을 추가해 문제가 된 로그만 건너뛰고 실행할 수 있습니다 (일부 데이터 유실 가능성 있음). * 메타데이터 복구 모드:
metadata_enable_recovery_mode = true
설정을 통해 손상된 메타데이터를 복구하거나 점검할 수 있습니다. * 마지막 수단 (Reset Election): 모든 Follower 노드가 죽고 리더 선출이 안 될 때, `bdbje_reset_election_group = true`를 사용하여 현재 노드를 강제로 리더로 승격시켜 서비스를 재개할 수 있습니다. 3. 예방 조치 (가장 중요) 메타데이터 유실은 치명적이므로 반드시 다음을 설정해야 합니다. 1. 고가용성(HA) 구성: FE 노드를 3개 이상의 홀수 개(1개 Leader + 2개 Follower)로 구성하여 하나가 깨져도 메타데이터가 유지되도록 합니다. 2. 정기적 백업: StarRocks는 주기적으로
image
파일을 생성합니다. 이
meta_dir
디렉토리를 외부 스토리지(S3, 스냅샷 등)에 정기적으로 백업하십시오. 3. K8s PV 보호: `PersistentVolumeClaim`의 `reclaimPolicy`를 `Retain`으로 설정하여 실수로 Pod이나 Namespace가 삭제되어도 데이터 볼륨이 보존되도록 관리해야 합니다. 결론적으로: 메타데이터가 완전히 사라지면 BE에 데이터가 있어도 복구가 매우 어렵거나 불가능합니다. 따라서 *K8s 환경에서는 FE의 PV 관리와 정기적인 메타데이터 백업*이 필수입니다. Referencesadministration/Meta_recovery.mdadministration/Metadata_management.mddeployment/helm_chart_usage.md Referencesadministration/Meta_recovery.md