레거시 메타데이터
레거시 메타데이터 (Legacy metadata) API
Apache Druid에서 데이터소스 메타데이터를 조회하는 레거시 API 엔드포인트를 다룹니다. 가급적 SQL 메타데이터 테이블을 사용하는 것을 권장해요.
출처: 문서
본문
이 문서는 Apache Druid에서 데이터소스 메타데이터를 조회하는 레거시 API 엔드포인트를 설명합니다. 데이터소스 메타데이터를 조회할 때는 대신 SQL 메타데이터 테이블을 사용하세요.
세그먼트 로딩 (Segment loading)
GET /druid/coordinator/v1/loadstatus
클러스터에 로드되어야 하는 세그먼트 대비 실제로 로드된 세그먼트의 백분율을 반환합니다.
GET /druid/coordinator/v1/loadstatus?simple
클러스터에 로드되어야 하는 세그먼트가 쿼리에 사용 가능해질 때까지 남은 로드할 세그먼트 수를 반환합니다. 여기에는 세그먼트 복제 수가 포함되지 않습니다.
GET /druid/coordinator/v1/loadstatus?full
클러스터에 로드되어야 하는 세그먼트가 모두 사용 가능해질 때까지 각 티어에서 남은 로드할 세그먼트 수를 반환합니다. 여기에는 세그먼트 복제 수가 포함됩니다.
GET /druid/coordinator/v1/loadstatus?full&computeUsingClusterView
클러스터에서 로딩 중인 모든 세그먼트가 사용 가능해질 때까지 각 티어의 아직 로드되지 않은 세그먼트 수를 반환합니다. 결과에는 세그먼트 복제 수가 포함됩니다. 또한 남은 로드할 세그먼트 수를 계산할 때 세그먼트를 로드할 수 있는 서비스 유형의 사용 가능한 노드 수를 고려합니다.
세그먼트는 다음 중 하나일 때 완전히 로드된 것으로 간주됩니다.
- Druid가 해당 로드 규칙에 구성된 횟수만큼 복제했을 때
- 또는 세그먼트가 복제되도록 구성된 각 티어에서 그 세그먼트의 복제본 수가 현재 그 티어에서 세그먼트를 로드하도록 허용된 서비스 유형의 사용 가능한 노드 수와 같을 때
GET /druid/coordinator/v1/loadqueue
각 Historical 프로세스에 대해 로드하고 드롭할 세그먼트의 ID를 반환합니다.
GET /druid/coordinator/v1/loadqueue?simple
각 Historical 프로세스에 대해 로드하고 드롭할 세그먼트 수와 총 세그먼트 로드·드롭 크기(byte)를 반환합니다.
GET /druid/coordinator/v1/loadqueue?full
각 Historical 프로세스에 대해 로드하고 드롭할 세그먼트의 직렬화된 JSON을 반환합니다.
데이터소스별 세그먼트 로딩
모든 간격 쿼리 파라미터는 ISO 8601 문자열입니다. 예:
2016-06-27/2016-06-28. 또한 이 API들은 호출 시점에 세그먼트를 사용할 수 있음을 보장할 뿐입니다. 이후 Historical 프로세스 실패나 다른 이유로 세그먼트가 여전히 누락될 수 있어요.
GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?forceMetadataRefresh={boolean}&interval={myInterval}
주어진 데이터소스에 대해 주어진 간격(또는 간격이 없으면 지난 2주) 동안 클러스터에 로드되어야 하는 세그먼트 대비 실제로 로드된 세그먼트의 백분율을 반환합니다. forceMetadataRefresh는 반드시 설정해야 합니다.
forceMetadataRefresh를true로 설정하면 Coordinator가 메타데이터 스토어에서 최신 세그먼트 메타데이터를 폴링하도록 강제합니다. (참고:forceMetadataRefresh=true는 모든 데이터소스의 Coordinator 메타데이터 캐시를 새로 고칩니다. 이는 메타데이터 스토어에 대한 부하 측면에서 무거운 작업일 수 있지만, 모든 최신 세그먼트의 로드 상태를 확인하려면 필요할 수 있어요.)forceMetadataRefresh를false로 설정하면 마지막 강제/주기적 새로 고침에서 Coordinator에 캐시된 메타데이터를 사용합니다.- 주어진 입력에 대해 used 세그먼트가 없으면 이 API는 204 No Content를 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?simple&forceMetadataRefresh={boolean}&interval={myInterval}
주어진 데이터소스에 대해 주어진 간격(또는 간격이 없으면 지난 2주) 동안 클러스터에 로드되어야 하는 세그먼트가 사용 가능해질 때까지 남은 로드할 세그먼트 수를 반환합니다. 여기에는 세그먼트 복제 수가 포함되지 않습니다. forceMetadataRefresh는 반드시 설정해야 합니다.
forceMetadataRefresh를true로 설정하면 Coordinator가 메타데이터 스토어에서 최신 세그먼트 메타데이터를 폴링하도록 강제합니다. (참고:forceMetadataRefresh=true는 모든 데이터소스의 Coordinator 메타데이터 캐시를 새로 고칩니다. 이는 메타데이터 스토어에 대한 부하 측면에서 무거운 작업일 수 있지만, 모든 최신 세그먼트의 로드 상태를 확인하려면 필요할 수 있어요.)forceMetadataRefresh를false로 설정하면 마지막 강제/주기적 새로 고침에서 Coordinator에 캐시된 메타데이터를 사용합니다.- 주어진 입력에 대해 used 세그먼트가 없으면 이 API는 204 No Content를 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?full&forceMetadataRefresh={boolean}&interval={myInterval}
주어진 데이터소스에 대해 주어진 간격(또는 간격이 없으면 지난 2주) 동안 클러스터에 로드되어야 하는 세그먼트가 모두 사용 가능해질 때까지 각 티어에서 남은 로드할 세그먼트 수를 반환합니다. 여기에는 세그먼트 복제 수가 포함됩니다. forceMetadataRefresh는 반드시 설정해야 합니다.
forceMetadataRefresh를true로 설정하면 Coordinator가 메타데이터 스토어에서 최신 세그먼트 메타데이터를 폴링하도록 강제합니다. (참고:forceMetadataRefresh=true는 모든 데이터소스의 Coordinator 메타데이터 캐시를 새로 고칩니다. 이는 메타데이터 스토어에 대한 부하 측면에서 무거운 작업일 수 있지만, 모든 최신 세그먼트의 로드 상태를 확인하려면 필요할 수 있어요.)forceMetadataRefresh를false로 설정하면 마지막 강제/주기적 새로 고침에서 Coordinator에 캐시된 메타데이터를 사용합니다.- 남은 로드할 세그먼트 수를 계산할 때 사용 가능한 클러스터 서비스를 고려하려면 선택적 쿼리 파라미터
computeUsingClusterView를 전달할 수 있어요. 자세한 내용은 Coordinator Segment Loading을 참고하세요. - 주어진 입력에 대해 used 세그먼트가 없으면 이 API는 204 No Content를 반환합니다.
메타데이터 스토어 정보
참고: 이 정보의 상당 부분은 더 간단하고 사용하기 쉬운 형태로 Druid SQL
sys.segments테이블을 통해 얻을 수 있습니다.
GET /druid/coordinator/v1/metadata/segments
클러스터에서 활성화된 각 데이터소스의 모든 세그먼트 목록을 반환합니다.
GET /druid/coordinator/v1/metadata/segments?datasources={dataSourceName1}&datasources={dataSourceName2}
클러스터에서 활성화된 하나 이상의 특정 데이터소스의 모든 세그먼트 목록을 반환합니다.
GET /druid/coordinator/v1/metadata/segments?includeOvershadowedStatus
각 데이터소스의 모든 세그먼트 목록을 전체 세그먼트 메타데이터와 overshadowed 추가 필드와 함께 반환합니다.
GET /druid/coordinator/v1/metadata/segments?includeOvershadowedStatus&includeRealtimeSegments
각 데이터소스의 모든 게시(published) 및 실시간(realtime) 세그먼트 목록을 전체 세그먼트 메타데이터와 overshadowed, realtime, numRows 추가 필드와 함께 반환합니다. 실시간 세그먼트는 Coordinator에 druid.centralizedDatasourceSchema.enabled가 설정된 경우에만 반환됩니다.
GET /druid/coordinator/v1/metadata/segments?includeOvershadowedStatus&datasources={dataSourceName1}&datasources={dataSourceName2}
하나 이상의 특정 데이터소스의 모든 세그먼트 목록을 전체 세그먼트 메타데이터와 overshadowed 추가 필드와 함께 반환합니다.
GET /druid/coordinator/v1/metadata/segments?includeOvershadowedStatus&includeRealtimeSegments&datasources={dataSourceName1}&datasources={dataSourceName2}
지정된 데이터소스의 모든 게시 및 실시간 세그먼트 목록을 전체 세그먼트 메타데이터와 overshadowed, realtime, numRows 추가 필드와 함께 반환합니다. 실시간 세그먼트는 Coordinator에 druid.centralizedDatasourceSchema.enabled가 설정된 경우에만 반환됩니다.
GET /druid/coordinator/v1/metadata/datasources
메타데이터 데이터베이스에서 조회한, 클러스터에 used 세그먼트가 하나 이상 있는 데이터소스 이름 목록을 반환합니다. 시스템이 도달할 최종 상태를 얻으려면 이 API를 호출해야 합니다.
GET /druid/coordinator/v1/metadata/datasources?includeUnused
클러스터에 그 데이터소스에 속한 used 세그먼트가 있는지와 무관하게 데이터소스 이름 목록을 반환합니다.
GET /druid/coordinator/v1/metadata/datasources?includeDisabled
데이터소스가 비활성화되어 있는지와 무관하게 데이터소스 이름 목록을 반환합니다.
GET /druid/coordinator/v1/metadata/datasources?full
클러스터에 used 세그먼트가 하나 이상 있는 모든 데이터소스 목록을 반환합니다. 메타데이터 스토어에 저장된 해당 데이터소스의 모든 메타데이터를 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}
메타데이터 스토어에 저장된 데이터소스의 전체 메타데이터를 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments
메타데이터 스토어에 저장된 데이터소스의 모든 세그먼트 목록을 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments?full
메타데이터 스토어에 저장된 데이터소스의 모든 세그먼트 목록을 전체 세그먼트 메타데이터와 함께 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments/{segmentId}
사용 중인(used) 세그먼트라면 메타데이터 스토어에 저장된 특정 세그먼트의 전체 세그먼트 메타데이터를 반환합니다. 세그먼트가 unused이거나 알 수 없으면 404 응답을 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments/{segmentId}?includeUnused=true
메타데이터 스토어에 저장된 특정 세그먼트의 전체 세그먼트 메타데이터를 반환합니다. 알 수 없으면 404 응답을 반환합니다.
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments (POST 본문 포함)
주어진 간격 중 어느 것과도 겹치는, 메타데이터 스토어에 저장된 데이터소스의 모든 세그먼트 목록을 반환합니다. 요청 본문은 [interval1, interval2,...] 같은 ISO 8601 간격 문자열 배열입니다. 예: ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000", "2012-01-05T00:00:00.000/2012-01-07T00:00:00.000"].
GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments?full (POST 본문 포함)
주어진 간격 중 어느 것과도 겹치는, 메타데이터 스토어에 저장된 데이터소스의 모든 세그먼트 목록을 전체 세그먼트 메타데이터와 함께 반환합니다. 요청 본문은 [interval1, interval2,...] 같은 ISO 8601 간격 문자열 배열입니다. 예: ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000", "2012-01-05T00:00:00.000/2012-01-07T00:00:00.000"].
POST /druid/coordinator/v1/metadata/dataSourceInformation
지정된 데이터소스에 대한 정보(데이터소스 스키마 포함)를 반환합니다.
POST /druid/coordinator/v1/metadata/bootstrapSegments
모든 데이터소스의 bootstrap 세그먼트에 대한 정보를 반환합니다. 반환 집합에는 브로드캐스트 규칙이 구성된 경우 모든 브로드캐스트 세그먼트가 포함됩니다.
데이터소스 (Datasources)
모든 간격 URL 파라미터는
/대신_로 구분된 ISO 8601 문자열입니다. 예:2016-06-27_2016-06-28.
GET /druid/coordinator/v1/datasources
Coordinator가 본 클러스터에서 찾은 데이터소스 이름 목록을 반환합니다. 이 뷰는 매 druid.coordinator.period마다 업데이트됩니다.
GET /druid/coordinator/v1/datasources?simple
클러스터에서 찾은 데이터소스의 이름과 속성을 담은 JSON 객체 목록을 반환합니다. 속성에는 세그먼트 수, 총 세그먼트 byte 크기, 복제된 총 세그먼트 byte 크기, minTime, maxTime이 포함됩니다.
GET /druid/coordinator/v1/datasources?full
클러스터에서 찾은 데이터소스 이름 목록을 해당 데이터소스의 모든 메타데이터와 함께 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}
데이터소스의 이름과 속성을 담은 JSON 객체를 반환합니다. 속성에는 세그먼트 수, 총 세그먼트 byte 크기, 복제된 총 세그먼트 byte 크기, minTime, maxTime이 포함됩니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}?full
데이터소스의 전체 메타데이터를 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals
세그먼트 간격의 집합을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals?simple
간격을, 그 간격의 세그먼트 총 byte 크기와 세그먼트 수를 담은 JSON 객체에 매핑한 맵을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals?full
간격을, 세그먼트 메타데이터를 그 간격의 세그먼트를 담은 서버 이름 집합에 매핑한 맵에 매핑한 맵을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}
간격의 세그먼트 ID 집합을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}?simple
지정된 간격에 포함된 세그먼트 간격을, 그 간격의 세그먼트 총 byte 크기와 세그먼트 수를 담은 JSON 객체에 매핑한 맵을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}?full
지정된 간격에 포함된 세그먼트 간격을, 세그먼트 메타데이터를 그 간격의 세그먼트를 담은 서버 이름 집합에 매핑한 맵에 매핑한 맵을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}/serverview
지정된 간격에 포함된 세그먼트 간격을, 그 간격의 세그먼트를 담은 서버에 대한 정보에 매핑한 맵을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/segments
클러스터의 데이터소스에 대한 모든 세그먼트 목록을 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/segments?full
클러스터의 데이터소스에 대한 모든 세그먼트 목록을 전체 세그먼트 메타데이터와 함께 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/segments/{segmentId}
클러스터의 특정 세그먼트에 대한 전체 세그먼트 메타데이터를 반환합니다.
GET /druid/coordinator/v1/datasources/{dataSourceName}/tiers
데이터소스가 존재하는 티어를 반환합니다.
간격 (Intervals)
모든 간격 URL 파라미터는
2016-06-27_2016-06-28처럼/대신_로 구분된 ISO 8601 문자열입니다.
GET /druid/coordinator/v1/intervals
모든 데이터소스의 모든 간격을 총 크기와 개수와 함께 반환합니다.
GET /druid/coordinator/v1/intervals/{interval}
주어진 ISO 간격과 교차하는 모든 간격의 집계된 총 크기와 개수를 반환합니다.
GET /druid/coordinator/v1/intervals/{interval}?simple
주어진 ISO 간격 내의 각 간격에 대한 총 크기와 개수를 반환합니다.
GET /druid/coordinator/v1/intervals/{interval}?full
주어진 ISO 간격 내의 각 간격에 대해 데이터소스별 총 크기와 개수를 반환합니다.
서버 정보 (Server information)
GET /druid/coordinator/v1/servers
{hostname}:{port} 형식을 사용하는 서버 URL 목록을 반환합니다. 참고로 다른 타입으로 실행되는 프로세스는 다른 포트로 여러 번 나타날 수 있습니다.
GET /druid/coordinator/v1/servers?simple
각 객체가 다음 키를 가진 서버 데이터 객체 목록을 반환합니다.
- host: 호스트 URL(
{hostname}:{port}포함) - type: 프로세스 타입 (
indexer-executor,historical) - currSize: 현재 사용 중인 스토리지 크기
- maxSize: 최대 스토리지 크기
- priority
- tier
쿼리 서버 (Query server)
이 섹션은 제안된 3-서버 구성에서 쿼리 서버(Broker)에 상주하는 서비스의 API 엔드포인트를 문서화합니다.
Broker
데이터소스 정보
모든 간격 URL 파라미터는
2016-06-27_2016-06-28처럼/대신_로 구분된 ISO 8601 문자열입니다.
참고: 이 정보의 상당 부분은 더 간단하고 사용하기 쉬운 형태로 Druid SQL
INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.COLUMNS,sys.segments테이블을 통해 얻을 수 있습니다.
GET /druid/v2/datasources
쿼리 가능한 데이터소스 목록을 반환합니다.
GET /druid/v2/datasources/{dataSourceName}
데이터소스의 차원과 메트릭을 반환합니다. 선택적으로 요청 파라미터 "full"을 제공하면 서비스되는 간격 목록과 각 간격에 서비스되는 차원·메트릭을 얻을 수 있습니다. 특정 간격을 참조하기 위해 요청 파라미터 "interval"을 명시적으로 제공할 수도 있습니다.
간격이 지정되지 않으면 현재 시간 이전의 구성 가능한 기간을 포괄하는 기본 간격이 사용됩니다. 이 간격의 기본 기간은 druid.query.segmentMetadata.defaultHistory를 통해 ISO 8601 기간 형식으로 지정됩니다.
GET /druid/v2/datasources/{dataSourceName}/dimensions
참고: 이 API는 비권장이며 향후 릴리스에서 제거될 예정입니다. 더 포괄적인 정보를 제공하고 스트리밍 데이터소스를 포함한 모든 데이터소스 타입을 지원하는 SegmentMetadataQuery를 대신 사용하세요. SQL을 사용한다면 INFORMATION_SCHEMA 테이블도 권장합니다.
데이터소스의 차원을 반환합니다.
GET /druid/v2/datasources/{dataSourceName}/metrics
참고: 이 API는 비권장이며 향후 릴리스에서 제거될 예정입니다. 더 포괄적인 정보를 제공하고 스트리밍 데이터소스를 포함한 모든 데이터소스 타입을 지원하는 SegmentMetadataQuery를 대신 사용하세요. SQL을 사용한다면 INFORMATION_SCHEMA 테이블도 권장합니다.
데이터소스의 메트릭을 반환합니다.
GET /druid/v2/datasources/{dataSourceName}/candidates?intervals={comma-separated-intervals}&numCandidates={numCandidates}
주어진 데이터소스와 간격에 대한 서버 위치를 포함한 세그먼트 정보 목록을 반환합니다. numCandidates를 지정하지 않으면 각 간격에 대해 모든 서버를 반환합니다.
더 알아보기 (Learn more)
- 데이터소스 메타데이터를 얻는 권장 방법은 SQL metadata tables 문서를 참고하세요.
- Coordinator가 제공하는 최신 API는 data-management API 문서에서 확인해 보세요.