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

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

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

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

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

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

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

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

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

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

Замечание

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

Предпосылки

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

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

  • Размер виртуальной машины и кластера: производительность приема потоковой передачи и масштабирование емкости с увеличением размера виртуальной машины и кластера. Число одновременных запросов приема ограничено шестью на одно ядро. Например, для SKU с 16 ядрами, такими как D14 и L16, максимальная допустимая нагрузка составляет 96 одновременных запросов на прием. Для двух основных SKU, таких как D11, максимальная поддерживаемая нагрузка составляет 12 одновременных запросов на ввод данных.
  • Ограничение размера данных: ограничение размера данных для запроса приема потоковой передачи составляет 4 МБ. Сюда входят все данные, созданные для стратегий обновления во время загрузки.
  • Обновления схемы: такие обновления схемы, как создание и изменение таблиц и мэппингов приема данных, могут занять до пяти минут в службе потокового приема данных. Дополнительные сведения см. в разделе "Прием потоковой передачи" и изменения схемы.
  • Емкость 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.

Ограничения

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

Дальнейшие шаги