Настройка приема потоковой передачи в кластере Azure Data Explorer

Прием потоковой передачи используется для загрузки данных, если требуется низкая задержка между приемом и запросом. Вы можете использовать прием потоковой передачи в следующих сценариях:

  • Требуется задержка меньше секунды.
  • Для оптимизации операционной обработки многих таблиц, когда поток данных в каждой таблице относительно мал (несколько записей в секунду), а общий объем приема данных большой (тысячи записей в секунду).

Если поток данных в каждую таблицу имеет большое значение (более 4 ГБ в час), рассмотрите возможность использования приема в очереди.

Дополнительные сведения о методах приема данных см. в статье Общие сведения о приеме данных.

Примеры кода на основе предыдущих версий пакета SDK см. в архивной статье.

Выбор соответствующего типа приема потоковой передачи

Поддерживаются два типа приема потоковой передачи:

Тип приема Описание
Подключение к данным Подключения к данным Центров событий, Центр Интернета вещей и Сетки событий могут использовать потоковую передачу при условии, что она включена на уровне кластера. Решение об использовании приема потоковой передачи выполняется в соответствии с политикой приема потоковой передачи, настроенной для целевой таблицы.
Сведения об управлении подключениями к данным см. в разделе Концентратор событий, Центр Интернета вещей и Сетка событий.
Настраиваемый прием Для пользовательского приема необходимо написать приложение, использующее одну из клиентских библиотек Azure Data Explorer.
Используйте сведения в этом разделе для настройки пользовательского приема. Вы также можете ознакомиться с примером приложения для приема потоковой передачи с использованием C#.

Используйте следующую таблицу, чтобы выбрать тип приема, подходящий для вашей среды.

Критерий Подключение к данным Настраиваемая загрузка
Задержка данных между инициированием приема и данными, доступными для запроса Более длительная задержка Более короткая задержка
Затраты на разработку Быстрая и простая установка, без дополнительных затрат на разработку Высокая нагрузка при разработке приложения, принимающего данные, обработки ошибок и обеспечения согласованности данных.

Примечание

Вы можете управлять процессом включения и отключения приема потоковой передачи в кластере с помощью портала Azure или программных средств C#. Если вы используете C# для своего пользовательского приложения, возможно, вам будет удобнее использовать программные средства.

Обязательные условия

Рекомендации по обеспечению производительности и эксплуатации

Основные факторы, которые могут повлиять на прием потоковой передачи:

  • Размер виртуальной машины и кластера. Производительность и емкость приема потоковой передачи повышаются с увеличением размера виртуальной машины и кластера. Число параллельных запросов приема ограничено шестью на ядро. Например, для номеров SKU с 16 ядрами, таких как D14 и L16, максимальная поддерживаемая загрузка составляет 96 параллельных запросов приема. Для номеров SKU с двумя ядрами, например D11, максимальная поддерживаемая нагрузка составляет 12 параллельных запросов приема.
  • Ограничение на объем данных. Предельный объем данных для запроса на прием потоковой передачи составляет 4 МБ. Это касается всех данных, созданных для политик обновления во время приема.
  • Обновления схемы. Обновления схемы, такие как создание и изменение таблиц и сопоставлений приема, для службы приема потоковой передачи могут выполняться до 5 минут. Дополнительные сведения см. в статье Прием потоковой передачи данных и изменения схемы.
  • Емкость SSD. При включении приема потоковой передачи в кластере, даже если данные не принимаются через потоковую передачу, для данных приема потоковой передачи будет использоваться часть локального диска SSD компьютеров кластера. Это уменьшает объем хранилища, доступный для горячего кэша.

Включите прием потоковой передачи в своем кластере

Прежде чем можно будет использовать прием потоковой передачи, необходимо включить эту возможность в кластере и определить политику приема потоковой передачи. Вы можете включить эту возможность при создании кластера или добавить ее в существующий кластер.

Предупреждение

Перед включением приема потоковой передачи ознакомьтесь с ограничениями.

Включение приема потоковой передачи при создании нового кластера

Вы можете включить прием потоковой передачи при создании нового кластера с помощью портала Azure или программных средств C#.

При создании кластера с помощью действий, описанных в статье Создание кластера и базы данных Azure Data Explorer, на вкладке Конфигурации выберите Прием потоковой передачи>Включить.

Включите прием потоковой передачи при создании кластера в Azure Data Explorer.

Включение приема потоковой передачи в существующем кластере

Если у вас есть существующий кластер, вы можете включить прием потоковой передачи с помощью портала Azure или программных средств C#.

  1. На портале Azure перейдите к кластеру Azure Data Explorer.

  2. Под разделом Параметры выберите пункт Конфигурации.

  3. В области Конфигурации выберите Вкл. , чтобы включить Прием потоковой передачи.

  4. Щелкните Сохранить.

    Включите прием потоковой передачи в Azure Data Explorer.

Создание целевой таблицы и определение политики

Создайте таблицу для получения данных приема потоковой передачи и определите связанную с ней политику с помощью портала Azure или программных средств C#.

  1. На портале Azure перейдите к своему кластеру.

  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);
    }
}

Отключение приема потоковой передачи в кластере

Предупреждение

Отключение приема потоковой передачи может занять несколько часов.

Перед отключением приема потоковой передачи в кластере Azure Data Explorer удалите политику приема потоковой передачи из всех соответствующих таблиц и баз данных. Удаление политики приема потоковой передачи активирует реорганизацию данных в кластере Azure Data Explorer. Данные приема потоковой передачи перемещаются из первоначального хранилища в постоянное хранилище в хранилище столбцов (экстентов или сегментов). Этот процесс может занять от нескольких секунд до нескольких часов в зависимости от объема данных в первоначальном хранилище.

Удаление политики приема потоковой передачи

Политику приема потоковой передачи можно удалить с помощью портала Azure или программных средств C#.

  1. На портале Azure перейдите в кластер Azure Data Explorer и выберите Запрос.

  2. Чтобы удалить политику приема потоковой передачи из таблицы, скопируйте следующую команду в Панель запросов и выберите Выполнить.

    .delete table TestTable policy streamingingestion
    

    Удалите политику приема потоковой передачи в Azure Data Explorer.

  3. Под разделом Параметры выберите пункт Конфигурации.

  4. В области Конфигурации выберите Выкл. , чтобы включить Прием потоковой передачи.

  5. Щелкните Сохранить.

    Отключите прием потоковой передачи в Azure Data Explorer.

Ограничения

  • Сопоставления данных должны быть предварительно созданы, чтобы их можно было использовать для приема потоковой передачи. Отдельные запросы на прием потоковой передачи не поддерживают встроенные сопоставления данных.
  • Невозможно установить теги экстентов для данных приема потоковой передачи.
  • Политика обновления. Политика обновления может ссылаться только на недавно принятые данные в исходной таблице, а не на другие данные или таблицы в базе данных.
  • Если для ведущего кластера применяется потоковый прием данных, кластер подписчиков также должен использовать потоковый прием данных, чтобы отслеживать данных потокового приема. Это же условие применимо при общем доступе к данным кластера через Data Share.