다음을 통해 공유


Azure Data Explorer 클러스터에서 스트리밍 수집 구성

스트리밍 수집은 수집과 쿼리 사이에 짧은 대기 시간이 필요할 때 데이터를 로드하는 데 유용합니다. 다음 시나리오에서 스트리밍 수집을 사용하는 것이 좋습니다.

  • 1초 미만의 대기 시간이 필요합니다.
  • 각 테이블로의 데이터 스트림이 비교적 작지만(초당 몇 개의 레코드) 전체 데이터 수집 볼륨은 높은(초당 수천 개의 레코드) 많은 테이블의 운영 처리를 최적화합니다.

각 테이블에 대한 데이터 스트림이 높은 경우(시간당 4GB 초과) 대기 중인 수집을 사용하는 것이 좋습니다.

수집 방법에 대한 자세한 내용은 데이터 수집 개요을 참조하세요.

이전 SDK 버전을 기반으로 하는 코드 샘플은 보관된 문서를 참조하세요.

적절한 스트리밍 수집 유형 선택

두 가지 스트리밍 수집 유형이 지원됩니다.

수집 유형 설명
데이터 연결 Event Hubs, IoT Hub 및 Event Grid 데이터 연결은 클러스터 수준에서 사용하도록 설정된 경우 스트리밍 수집을 사용할 수 있습니다. 스트리밍 수집을 사용하는 결정은 대상 테이블에 구성된 스트리밍 수집 정책에 따라 수행됩니다.
데이터 연결 관리에 대한 자세한 내용은 Event Hub, IoT Hub Event Grid를 참조하세요.
사용자 지정 수집 사용자 지정 수집을 사용하려면 Azure Data Explorer 클라이언트 라이브러리 중 하나를 사용하는 애플리케이션을 작성해야 합니다.
이 항목의 정보를 사용하여 사용자 지정 수집을 구성합니다. C# 스트리밍 수집 샘플 애플리케이션이 유용할 수도 있습니다.

다음 표를 사용하여 환경에 적합한 수집 유형을 선택합니다.

조건 데이터 연결 사용자 지정 수집
수집 시작과 쿼리에 사용할 수 있는 데이터 사이의 데이터 지연 더 긴 지연 더 짧은 지연
개발 오버헤드 빠르고 쉬운 설정, 개발 오버헤드 없음 데이터를 수집하고, 오류를 처리하고, 데이터 일관성을 보장하는 애플리케이션을 만들기 위한 개발 오버헤드 높음

참고

Azure Portal을 사용하거나 C#에서 프로그래밍 방식으로 클러스터에서 스트리밍 수집을 사용하거나사용하지 않도록 설정하는 프로세스를 관리할 수 있습니다. C#을 사용자 지정 애플리케이션에 사용하는 경우 프로그래밍 방식을 사용하는 것이 더 편리할 수 있습니다.

사전 요구 사항

성능 및 운영 고려 사항

스트리밍 수집에 영향을 줄 수 있는 주요 요소는 다음과 같습니다.

  • VM 및 클러스터 크기: 스트리밍 수집 성능 및 용량은 VM 및 클러스터 크기가 증가함에 따라 크기 조정됩니다. 동시 수집 요청 수는 코어당 6개로 제한됩니다. 예를 들어, D14, L16과 같은 16 코어 SKU의 경우 최대 지원되는 부하는 동시 수집 요청 96개입니다. D11과 같은 2 코어 SKU의 경우 최대 지원되는 부하는 동시 수집 요청 12개입니다.
  • 데이터 크기 제한: 스트리밍 수집 요청에 대한 데이터 크기 제한은 4MB입니다. 여기에는 수집 중 업데이트 정책을 위해 만들어진 모든 데이터가 포함됩니다.
  • 스키마 업데이트: 테이블 만들기/수정 및 수집 매핑과 같은 스키마 업데이트에는 스트리밍 수집 서비스의 경우 최대 5분이 걸릴 수 있습니다. 자세한 내용은 스트리밍 수집 및 스키마 변경을 참조하세요.
  • SSD 용량: 클러스터에서 스트리밍 수집을 사용하도록 설정하면 스트리밍을 통해 데이터가 수집되지 않는 경우에도 클러스터 컴퓨터의 로컬 SSD 디스크 일부를 수집 데이터 스트리밍에 사용하고 핫 캐시에 사용할 수 있는 스토리지를 줄입니다.

클러스터에서 스트리밍 수집 사용

스트리밍 수집을 사용하려면 먼저 클러스터에서 기능을 사용하도록 설정하고 스트리밍 수집 정책을 정의해야 합니다. 클러스터를 만들 때 기능을 사용하도록 설정하거나 기존 클러스터에 추가할 수 있습니다.

Warning

스트리밍 수집을 사용하도록 설정하기 전에 제한 사항을 검토하세요.

새 클러스터를 만드는 동안 스트리밍 수집 사용

Azure Portal을 사용하거나 C#에서 프로그래밍 방식으로 새 클러스터를 만드는 동안 스트리밍 수집을 사용하도록 설정할 수 있습니다.

Azure Data Explorer 클러스터 및 데이터베이스 만들기의 단계를 사용하여 클러스터를 만드는 동안 구성 탭에서 스트리밍 수집>켜기를 차례로 선택합니다.

Azure Data Explorer에서 클러스터를 만드는 동안 스트리밍 수집을 사용하도록 설정.

기존 클러스터에서 스트리밍 수집 사용

기존 클러스터가 있는 경우 Azure Portal을 사용하거나 C#에서 프로그래밍 방식으로 스트리밍 수집을 사용하도록 설정할 수 있습니다.

  1. Azure Portal에서 Azure Data Explorer 클러스터로 이동합니다.

  2. 설정에서 구성을 선택합니다.

  3. 구성 창에서 켜기를 선택하여 스트리밍 수집을 사용하도록 설정합니다.

  4. 저장을 선택합니다.

    Azure Data Explorer에서 스트리밍 수집 켜기.

대상 테이블 만들기 및 정책 정의

스트리밍 수집 데이터를 받는 테이블을 만들고, Azure Portal을 사용하거나 C#에서 프로그래밍 방식으로 관련 정책을 정의합니다.

  1. Azure Portal에서 클러스터로 이동합니다.

  2. 쿼리를 선택합니다.

    Azure Data Explorer 포털에서 쿼리를 선택하여 스트리밍 수집을 사용하도록 설정.

  3. 스트리밍 수집을 통해 데이터를 수신할 테이블을 만들려면 다음 명령을 쿼리 창에 복사하고 실행을 선택합니다.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    

    Azure Data Explorer로의 스트리밍 수집을 위한 테이블을 만들기.

  4. 다음 명령 중 하나를 쿼리 창에 복사하고 실행을 선택합니다. 여기서 만든 테이블 또는 테이블이 포함된 데이터베이스에서 스트리밍 수집 정책을 정의합니다.

    데이터베이스 수준에서 정의된 정책은 데이터베이스의 모든 기존 테이블 및 미래 테이블에 적용됩니다. 데이터베이스 수준에서 정책을 사용하도록 설정하면 테이블별로 사용하도록 설정할 필요가 없습니다.

    • 만든 테이블에 대한 정책을 정의하려면 다음을 사용합니다.

      .alter table TestTable policy streamingingestion enable
      
    • 만든 테이블이 포함된 데이터베이스에 대한 정책을 정의하려면 다음을 사용합니다.

      .alter database StreamingTestDb policy streamingingestion enable
      

    Azure Data Explorer에서 스트리밍 수집 정책 정의.

데이터를 클러스터에 수집하는 스트리밍 수집 애플리케이션 만들기

기본 설정 언어를 사용하여 데이터를 클러스터에 수집하는 애플리케이션을 만듭니다.

using System.IO;
using System.Threading.Tasks;
using Kusto.Data; // Requires Package Microsoft.Azure.Kusto.Data
using Kusto.Data.Common;
using Kusto.Ingest; // Requires Package Microsoft.Azure.Kusto.Ingest
namespace StreamingIngestion;
class Program
{
    static async Task Main(string[] args)
    {
        var clusterPath = "https://<clusterName>.<region>.kusto.windows.net";
        var appId = "<appId>";
        var appKey = "<appKey>";
        var appTenant = "<appTenant>";
        // Create Kusto connection string with App Authentication
        var connectionStringBuilder = new KustoConnectionStringBuilder(clusterPath)
            .WithAadApplicationKeyAuthentication(
                applicationClientId: appId,
                applicationKey: appKey,
                authority: appTenant
            );
        // Create a disposable client that will execute the ingestion
        using var client = KustoIngestFactory.CreateStreamingIngestClient(connectionStringBuilder);
        // Ingest from a compressed file
        var fileStream = File.Open("MyFile.gz", FileMode.Open);
        // Initialize client properties
        var ingestionProperties = new KustoIngestionProperties(databaseName: "<databaseName>", tableName: "<tableName>");
        // Create source options
        var sourceOptions = new StreamSourceOptions { CompressionType = DataSourceCompressionType.GZip, };
        // Ingest from stream
        await client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions);
    }
}

클러스터에서 스트리밍 수집 사용 안 함

Warning

스트리밍 수집을 사용하지 않도록 설정하는 데 몇 시간이 걸릴 수 있습니다.

Azure Data Explorer 클러스터에서 스트리밍 수집을 사용하지 않도록 설정하기 전에 모든 관련 테이블과 데이터베이스에서 스트리밍 수집 정책을 삭제합니다. 스트리밍 수집 정책을 제거하면 Azure Data Explorer 클러스터 내에서 데이터 다시 정렬이 트리거됩니다. 스트리밍 수집 데이터는 초기 스토리지에서 열 저장소(익스텐트 또는 분할)의 영구 스토리지로 이동됩니다. 이 프로세스는 초기 스토리지의 데이터 양에 따라 몇 초에서 몇 시간까지 걸릴 수 있습니다.

스트리밍 수집 정책 삭제

Azure Portal을 사용하거나 C#에서 프로그래밍 방식으로 스트리밍 수집 정책을 삭제할 수 있습니다.

  1. Azure Portal에서 Azure Data Explorer 클러스터로 이동한 다음, 쿼리를 선택합니다.

  2. 테이블에서 스트리밍 수집 정책을 삭제하려면 다음 명령을 쿼리 창에 복사하고 실행을 선택합니다.

    .delete table TestTable policy streamingingestion
    

    Azure Data Explorer에서 스트리밍 수집 정책 삭제.

  3. 설정에서 구성을 선택합니다.

  4. 구성 창에서 끄기를 선택하여 스트리밍 수집을 사용하지 않도록 설정합니다.

  5. 저장을 선택합니다.

    Azure Data Explorer에서 스트리밍 수집 끄기.

제한 사항

  • 스트리밍 수집에 사용하려면 데이터 매핑미리 만들어야 합니다. 개별 스트리밍 수집 요청은 인라인 데이터 매핑을 수용하지 않습니다.
  • 스트리밍 수집 데이터에는 익스텐트 태그를 설정할 수 없습니다.
  • 업데이트 정책 업데이트 정책은 원본 테이블에서 새로 수집된 데이터만 참조할 수 있으며 데이터베이스의 다른 데이터나 테이블은 참조할 수 없습니다.
  • 트랜잭션 정책을 사용하는 업데이트 정책이 실패하면 재시도는 일괄 처리 수집으로 대체됩니다.
  • 팔로워 데이터베이스의 리더로 사용되는 클러스터에서 스트리밍 수집을 사용하도록 설정한 경우 스트리밍 수집 데이터를 팔로우하려면 다음 클러스터에서 스트리밍 수집을 사용하도록 설정해야 합니다. 클러스터 데이터가 데이터 공유를 통해 공유되는지 여부도 마찬가지입니다.