본문으로 건너뛰기
최종 수정: 에

컴퓨트 그룹 관리: 생성, 권한 부여, 전환, 확장 및 축소 작업 가이드

컴퓨팅과 스토리지가 분리된 아키텍처에서는 하나 이상의 컴퓨트 노드(BE)를 컴퓨트 그룹으로 묶을 수 있습니다. 이 문서는 조회, 추가, 권한 부여, 기본 그룹 설정, 전환, 확장 및 축소를 비롯한 컴퓨트 그룹의 모든 관리 작업을 설명합니다.

버전 참고

3.0.2 이전 버전에서는 컴퓨트 그룹을 컴퓨트 클러스터라고 불렀습니다.

컴퓨트 그룹 활용 사례​

여러 컴퓨트 그룹을 사용하는 아키텍처에서는 USE @<compute_group_name> 문을 사용하여 특정 워크로드를 지정한 컴퓨트 그룹으로 라우팅하고, 서로 다른 유형의 워크로드를 물리적으로 격리할 수 있습니다.

다음 시나리오는 C1과 C2라는 두 컴퓨트 그룹을 가정합니다.

시나리오설명사용 방법
읽기 간 격리대규모 쿼리를 각각 별도의 컴퓨트 노드에서 실행하여 CPU/메모리 리소스 경합 방지쿼리 1은 USE @c1 사용, 쿼리 2는 USE @c2 사용
읽기/쓰기 격리데이터 적재와 쿼리 간의 리소스 경합 방지. C1은 C2에 새로 적재된 데이터에 접근 가능쿼리는 USE @c1 사용, 데이터 적재는 USE @c2 사용
쓰기 간 격리빈번한 소규모 데이터 적재와 대규모 배치 데이터 적재를 별도로 실행하여 상호 간섭 방지소규모 데이터 적재는 USE @c1 사용, 배치 데이터 적재는 USE @c2 사용
참고

위의 격리는 CPU와 메모리 같은 컴퓨팅 리소스에 적용됩니다. 피어 캐시 읽기는 기본적으로 활성화되어 있으므로, 한 컴퓨트 그룹의 쿼리가 로컬 캐시에서 데이터를 찾지 못하면 다른 컴퓨트 그룹에 있는 BE의 File Cache를 읽을 수 있습니다. 그룹 간 캐시 채우기를 설정한 경우에는 해당 그룹이 쿼리를 대신해 객체 스토리지에서 데이터를 가져오도록 할 수도 있습니다. 이로 인해 컴퓨트 그룹 간의 네트워크, 디스크, 캐시 격리가 약해집니다. 엄격한 격리가 필요하면 BE에서 피어 캐시 읽기를 비활성화하세요.

기본 컴퓨트 그룹 선택 방식​

사용자가 명시적으로 기본 컴퓨트 그룹을 설정하지 않은 경우, 시스템은 다음 조건을 충족하는 컴퓨트 그룹을 자동으로 선택합니다.

  • 컴퓨트 그룹에 활성 상태인 컴퓨트 노드가 하나 이상 있습니다.
  • 현재 사용자에게 해당 컴퓨트 그룹의 USAGE_PRIV 권한이 있습니다.

동일한 세션 내에서는 사용자가 명시적으로 변경하지 않는 한 기본 컴퓨트 그룹이 유지됩니다. 세션이 달라지면 다음 조건 중 하나가 발생할 때 시스템이 기본 컴퓨트 그룹을 자동으로 전환할 수 있습니다.

전환 조건항상 전환되는지 여부
사용자가 이전에 선택된 컴퓨트 그룹의 USAGE_PRIV 권한을 잃음예
컴퓨트 그룹이 추가되거나 제거됨예
이전에 선택된 컴퓨트 그룹에 활성 상태인 컴퓨트 노드가 더 이상 없음전환될 수 있음

모든 컴퓨트 그룹 조회​

목적: 현재 리포지토리의 모든 컴퓨트 그룹을 조회합니다.

명령:

SHOW COMPUTE GROUPS;

설명: 반환되는 결과는 사용자의 권한 수준에 따라 달라집니다.

  • ADMIN 권한이 있는 사용자는 모든 컴퓨트 그룹을 조회할 수 있습니다.
  • 일반 사용자는 USAGE_PRIV 권한이 있는 컴퓨트 그룹만 조회할 수 있습니다.
  • 사용자에게 어떤 컴퓨트 그룹의 USAGE_PRIV 권한도 없으면 결과가 비어 있습니다.

컴퓨트 그룹 추가​

사전 조건: OPERATOR 권한(노드 관리 권한)이 필요합니다. 기본적으로 root 계정만 이 권한을 가집니다. GRANT 명령을 사용하여 다른 계정에 이 권한을 부여할 수 있습니다. 자세한 내용은 권한 관리를 참조하세요.

목적: BE 노드를 추가하고 컴퓨트 그룹에 할당합니다.

명령(컴퓨트 그룹 지정):

ALTER SYSTEM ADD BACKEND 'host:9050' PROPERTIES ("tag.compute_group_name" = "new_group");

명령(기본 컴퓨트 그룹 사용): 컴퓨트 그룹을 지정하지 않으면 노드는 기본적으로 default_compute_group에 합류합니다.

ALTER SYSTEM ADD BACKEND 'host:9050';

자세한 내용은 ADD BACKEND SQL 참조를 참조하세요.

컴퓨트 그룹 접근 권한 부여​

사전 조건: 현재 사용자에게 ADMIN 권한이 있거나 admin 역할에 속해야 합니다.

목적: 지정한 사용자에게 컴퓨트 그룹의 USAGE_PRIV 권한을 부여합니다.

명령:

GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};

컴퓨트 그룹 접근 권한 회수​

사전 조건: 현재 사용자에게 ADMIN 권한이 있거나 admin 역할에 속해야 합니다.

목적: 지정한 사용자의 컴퓨트 그룹 USAGE_PRIV 권한을 회수합니다.

명령:

REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user};

기본 컴퓨트 그룹 설정​

현재 사용자의 기본 그룹 설정​

사전 조건: 현재 사용자에게 대상 컴퓨트 그룹의 USAGE_PRIV 권한이 이미 있어야 합니다.

SET PROPERTY 'default_compute_group' = '{clusterName}';

다른 사용자의 기본 그룹 설정​

사전 조건: 현재 사용자에게 관리자 권한이 있어야 합니다.

SET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}';

기본 컴퓨트 그룹 조회​

현재 사용자의 기본 컴퓨트 그룹을 조회합니다. 결과의 default_compute_group 값이 기본 컴퓨트 그룹입니다.

SHOW PROPERTY;

다른 사용자의 기본 컴퓨트 그룹을 조회합니다(관리자 권한 필요).

SHOW PROPERTY FOR {user};

권한 설명​

사용자 역할작업 가능 범위
관리자 사용자(예: CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin")자신과 다른 사용자의 기본 컴퓨트 그룹을 설정할 수 있으며, 자신과 다른 사용자의 PROPERTY를 조회할 수 있음
일반 사용자(예: CREATE USER jack1 IDENTIFIED BY '123456')자신의 기본 컴퓨트 그룹만 설정할 수 있고, 자신의 PROPERTY만 조회할 수 있으며, 모든 컴퓨트 그룹을 조회할 수는 없음(GRANT ADMIN 권한 필요)
참고
  • 현재 사용자에게 기본 컴퓨트 그룹이 설정되어 있지 않으면 데이터를 읽거나 쓸 때 오류가 발생합니다. USE @cluster 명령으로 현재 세션의 컴퓨트 그룹을 지정하거나, SET PROPERTY 문으로 기본 컴퓨트 그룹을 설정하세요.
  • 현재 사용자에게 기본 컴퓨트 그룹이 설정되어 있더라도 이후에 해당 컴퓨트 그룹이 삭제되면 데이터를 읽거나 쓸 때 오류가 발생합니다. USE @cluster 명령으로 컴퓨트 그룹을 다시 지정하거나, SET PROPERTY로 기본 컴퓨트 그룹 설정을 업데이트하세요.

컴퓨트 그룹 전환​

목적: 컴퓨팅과 스토리지가 분리된 아키텍처에서 현재 세션에 사용할 데이터베이스와 컴퓨트 그룹을 지정합니다.

구문:

USE { [catalog_name.]database_name[@compute_group_name] | @compute_group_name }

설명: 데이터베이스 이름이나 컴퓨트 그룹 이름에 예약 키워드가 포함되어 있으면 해당 이름을 백틱(`)으로 감싸세요.

컴퓨트 그룹 확장 및 축소​

다음 명령으로 BE 노드를 추가하거나 제거하여 컴퓨트 그룹을 확장하거나 축소합니다.

  • 확장: ALTER SYSTEM ADD BACKEND
  • 축소: ALTER SYSTEM DECOMMISSION BACKEND

확장 및 축소 후 부하 재분산​

Cloud Rebalance는 Doris의 컴퓨팅과 스토리지가 분리된 아키텍처에서 사용하는 부하 분산 메커니즘입니다. 컴퓨트 그룹의 BE 노드가 확장되거나 축소되면 시스템은 클러스터 전체의 읽기 및 쓰기 트래픽 분포를 자동으로 재조정합니다. 장기간 오프라인 상태인 노드도 축소 이벤트로 처리됩니다.

균형 조정 전략 유형​

지원 버전

balance_type 기능은 Doris 3.1.3 및 Doris 4.0.2부터 지원됩니다. 이 버전들 이전에는 FE 전역 설정인 enable_cloud_warm_up_for_rebalance로만 리밸런싱 중 워밍업 작업의 실행 여부를 제어할 수 있었습니다.

다음 예시는 확장 시나리오를 기준으로 네 가지 전략 유형을 설명합니다.

전략 유형새 노드가 준비될 때까지 걸리는 시간성능 영향기술 원리적용 시나리오
without_warmup가장 빠름가장 큼FE가 샤드 매핑을 직접 업데이트함. 첫 읽기/쓰기 시 파일 캐시가 없어 S3에서 데이터를 가져와야 함새 노드를 신속하게 가동해야 하고 성능 변동을 허용할 수 있는 경우에 적합
async_warmup빠름캐시 미스 발생 가능워밍업 작업을 발행하고, 작업이 성공하거나 시간 초과되면 매핑을 업데이트함. 매핑 전환 중 파일 캐시를 채우려고 시도하지만 일부 첫 읽기에서는 여전히 캐시 미스가 발생할 수 있음범용으로 사용 가능하며, 성능이 무난함
sync_warmup느림캐시 미스가 거의 없음워밍업 작업을 발행하고, FE가 작업 완료를 확인한 후에만 매핑을 변경하여 캐시 마이그레이션의 완료를 보장함확장 및 축소 후 높은 성능이 필요하고 새 노드의 파일 캐시가 채워져 있어야 하는 경우에 적합
peer_read_async_warmup가장 빠름작음FE가 샤드 매핑을 직접 변경하고 최선 노력 방식의 워밍업 작업을 발행함. 새 노드의 첫 읽기는 피어 캐시 읽기를 통해 원본 BE의 파일 캐시에서 데이터를 가져오며, 이를 위해 BE에서 enable_cache_read_from_peer를 활성화 상태(기본값)로 유지해야 함S3에서 직접 읽지 않고 새 노드를 신속하게 가동해야 하며, 원본 BE가 추가 읽기 부하를 감당할 수 있는 경우에 적합

설정​

전역 기본 균형 조정 유형​

FE 설정 파일(fe.conf)에서 전역 기본값을 설정합니다.

cloud_warm_up_for_rebalance_type = "async_warmup"
컴퓨트 그룹 수준 설정​

컴퓨트 그룹마다 균형 조정 유형을 개별적으로 설정할 수 있습니다.

ALTER COMPUTE GROUP cg1 PROPERTIES("balance_type"="async_warmup");
설정 우선순위 규칙​
  1. 컴퓨트 그룹에 balance_type이 설정되어 있지 않으면 전역 기본값인 async_warmup을 사용합니다.
  2. 컴퓨트 그룹에 balance_type이 설정되어 있으면 리밸런싱을 실행할 때 해당 그룹의 설정이 우선 적용됩니다.

컴퓨트 그룹 이름 변경​

목적: 기존 컴퓨트 그룹의 이름을 새 이름으로 변경합니다.

명령:

ALTER SYSTEM RENAME COMPUTE GROUP <old_name> <new_name>;
참고

이름을 변경해도 기존 컴퓨트 그룹 이름(old_name)에 연결된 사용자 권한과 기본 컴퓨트 그룹 설정은 새 이름(new_name)으로 자동 업데이트되지 않습니다. 관리자 권한이 있는 계정으로 권한을 수동으로 다시 부여해야 합니다. 이 동작은 MySQL 권한 시스템과 동일합니다.

자주 묻는 질문​

전역 리밸런싱 유형을 어떻게 조회하고 변경하나요?​

  • 조회:
    ADMIN SHOW FRONTEND CONFIG LIKE "cloud_warm_up_for_rebalance_type";
  • 변경(FE를 재시작하지 않아도 적용됨):
    ADMIN SET FRONTEND CONFIG ("cloud_warm_up_for_rebalance_type" = "without_warmup");

컴퓨트 그룹의 균형 조정 유형을 어떻게 조회하나요?​

SHOW COMPUTE GROUPS;를 실행하세요. 결과의 properties 열에는 각 컴퓨트 그룹의 속성이 포함되어 있으며, 여기에서 balance_type 설정을 확인할 수 있습니다.

클러스터의 Tablet 상태가 안정적인지 어떻게 확인하나요?​

방법 1: SHOW BACKENDS로 확인

BE 노드 간 tablet 수가 대략적으로 균형을 이루는지 확인합니다. 참고 범위는 다음과 같습니다.

(total tablets in cluster / number of BEs in Compute Group) × 0.95
~
(total tablets in cluster / number of BEs in Compute Group) × 1.05

여기서 0.05는 FE 설정 항목인 cloud_rebalance_percent_threshold의 기본값입니다. BE 노드 간 tablet 분포를 더 균일하게 하려면 이 설정값을 줄이세요.

방법 2: FE 메트릭으로 관찰

FE 메트릭에서 doris_fe_cloud_.*_balance_num 메트릭 계열을 확인합니다. 값이 장기간 변하지 않으면 컴퓨트 그룹이 균형 상태에 도달한 것입니다. 지속적으로 관찰할 수 있도록 모니터링 대시보드에 이 메트릭을 설정하는 것을 권장합니다.

curl "http://feip:fe_http_port/metrics" | grep '_balance_num'

데이터를 읽거나 쓸 때 "기본 컴퓨트 그룹이 설정되지 않음" 오류가 발생하면 어떻게 해야 하나요?​

다음 방법 중 하나로 문제를 해결하세요.

  1. USE @cluster 명령을 사용하여 현재 세션의 컴퓨트 그룹을 임시로 지정합니다.
  2. SET PROPERTY 'default_compute_group' = '{clusterName}'를 사용하여 기본 컴퓨트 그룹을 영구적으로 설정합니다.

기본 컴퓨트 그룹이 삭제된 후 오류가 발생하면 어떻게 해야 하나요?​

컴퓨트 그룹이 삭제되면 해당 컴퓨트 그룹을 사용하는 사용자에게 읽기/쓰기 작업 중 오류가 발생합니다. 해결 방법은 다음과 같습니다.

  1. USE @cluster 명령을 사용하여 현재 세션의 컴퓨트 그룹을 다시 지정합니다.
  2. SET PROPERTY를 사용하여 기본 컴퓨트 그룹을 다른 유효한 컴퓨트 그룹으로 업데이트합니다.