- Предотвращение всплывания (bubbling) и захвата (capture) событий
- Сбор событий из Центров событий Azure в хранилище BLOB-объектов Azure или Azure Data Lake Storage Capture events through Azure Event Hubs in Azure Blob Storage or Azure Data Lake Storage
- Как работает функция «Сбор» в Центрах событий How Event Hubs Capture works
- Управление окнами в записи Capture windowing
- Масштабирование единиц пропускной способности Scaling to throughput units
- Настройка функции «Сбор» в Центрах событий Setting up Event Hubs Capture
- Просмотр собранных файлов и работа с Avro Exploring the captured files and working with Avro
- Использование Apache Drill Use Apache Drill
- Использование Apache Spark Use Apache Spark
- Использование средств Avro Use Avro Tools
- Выставление счета за использование функции «Сбор» в Центрах событий How Event Hubs Capture is charged
- Интеграция со службой «Сетка событий» Integration with Event Grid
- Дальнейшие действия Next steps
Предотвращение всплывания (bubbling) и захвата (capture) событий
Предотвратить передачу события от одного элемента другому, так называемое «всплывание» события, можно при помощи следующей функции:
Здесь — oEvent это объект «событие». Если объект oEvent не определен (имеем дело с Internet Explorer), то используем window.event.
Для тех, кто не знает, что такое передача событий, вкратце объясню его смысл.
Событие JavaScript выполняется в две фазы — «захват» (capturing) и «всплывание» (bubbling). Эти схемы передачи событий определяют, какие элементы будут обрабатывать данное событие и в каком порядке. Пример передачи события для обоих схем представлен на следующем рисунке:
Рисунок показывает, в каком порядке вызываются обработчики событий при щелчке на ссылке. Вначале вызывается обработчик для объекта document, затем , затем
По окончании первой фазы, начинается вторая — «всплывание» события, когда обработчики событий вызываются в обратном порядке: ,
и так далее до объекта document.
DOM-совместимые браузеры поддерживают оба вида передачи событий, в то время как Internet Explorer поддерживает только всплывание.
При использовании обычных обработчиков событий выполняется только вторая фаза — всплывание. Если же вместо обработчиков добавляются слушатели событий при помощи функции addEventListener(), то тип передачи событий можно выбирать:
Последний параметр в функции addEventListener() указывает на тип передачи событий, если false, то используется всплывание, если true, то захват.
Сбор событий из Центров событий Azure в хранилище BLOB-объектов Azure или Azure Data Lake Storage Capture events through Azure Event Hubs in Azure Blob Storage or Azure Data Lake Storage
Центры событий Azure позволяют автоматически записывать определенный объем потоковых данных из Центров событий в учетную запись хранилища BLOB-объектов Azure или Azure Data Lake Storage Gen 1 или Gen 2 с указанным интервалом времени и размера. Azure Event Hubs enables you to automatically capture the streaming data in Event Hubs in an Azure Blob storage or Azure Data Lake Storage Gen 1 or Gen 2 account of your choice, with the added flexibility of specifying a time or size interval. Настройка функции «Сбор» выполняется быстро, ее использование не влечет дополнительных административных расходов, а масштабирование осуществляется автоматически на основе единиц пропускной способности Центров событий. Setting up Capture is fast, there are no administrative costs to run it, and it scales automatically with Event Hubs throughput units. Функция «Сбор» в Центрах событий — это самый удобный способ передачи потоковых данных в Azure. Он позволяет сосредоточиться на обработке данных, а не на их записи. Event Hubs Capture is the easiest way to load streaming data into Azure, and enables you to focus on data processing rather than on data capture.
Настройка записи центров событий для использования хранилища Azure Data Lake Storage Gen 2 совпадает с настройкой для использования хранилища BLOB-объектов Azure. Configuring Event Hubs Capture to use Azure Data Lake Storage Gen 2 is same as configuring it to use an Azure Blob Storage. Дополнительные сведения см. в разделе Настройка записи центров событий. For details, see Configure Event Hubs Capture.
Кроме того, функция «Сбор» в Центрах событий обеспечивает обработку конвейеров в режиме реального времени и на основе пакетов в одном потоке, Event Hubs Capture enables you to process real-time and batch-based pipelines on the same stream. благодаря чему вы можете создавать решения, масштабируемые по мере необходимости. This means you can build solutions that grow with your needs over time. Независимо от того, что вам нужно (создать системы на основе пакетов с учетом будущих потребностей в обработке данных в режиме реального времени или добавить эффективный холодный путь к имеющемуся решению для обработки в режиме реального времени), функция «Сбор» в Центрах событий упрощает работу с потоковыми данными. Whether you’re building batch-based systems today with an eye towards future real-time processing, or you want to add an efficient cold path to an existing real-time solution, Event Hubs Capture makes working with streaming data easier.
Учетная запись целевой службы хранилища (Служба хранилища Azure или Azure Data Lake Storage) должна находиться в той же подписке, что и концентратор событий. The destination storage (Azure Storage or Azure Data Lake Storage) account must be in the same subscription as the event hub.
Как работает функция «Сбор» в Центрах событий How Event Hubs Capture works
Центры событий — это устойчивый буфер для хранения входящих данных телеметрии в течение определенного времени, подобный распределенному журналу. Event Hubs is a time-retention durable buffer for telemetry ingress, similar to a distributed log. Масштабирование в Центрах событий выполняется в рамках модели секционированных потребителей. The key to scaling in Event Hubs is the partitioned consumer model. Каждая секция — это независимый сегмент данных, потребление которого осуществляется отдельно. Each partition is an independent segment of data and is consumed independently. По истечении настроенного срока хранения эти данные устаревают, Over time this data ages off, based on the configurable retention period. поэтому определенный концентратор событий никогда не заполняется полностью. As a result, a given event hub never gets «too full.»
Функция «Сбор» в Центрах событий позволяет указать собственную учетную запись хранилища BLOB-объектов Azure и контейнер, или учетную запись Azure Data Lake Store, используемые для хранения собранных данных. Event Hubs Capture enables you to specify your own Azure Blob storage account and container, or Azure Data Lake Storage account, which are used to store the captured data. Эти учетные записи могут находиться в том же регионе, что и концентратор событий, или в другом. Это дает гибкие возможности использования функции «Сбор» в Центрах событий. These accounts can be in the same region as your event hub or in another region, adding to the flexibility of the Event Hubs Capture feature.
Собранные данные записываются в формате Apache Avro — сжатый быстрый двоичный формат, обеспечивающий эффективную структуру данных за счет встроенной схемы. Captured data is written in Apache Avro format: a compact, fast, binary format that provides rich data structures with inline schema. Этот формат широко используется в экосистеме Hadoop, Stream Analytics и фабрике данных Azure. This format is widely used in the Hadoop ecosystem, Stream Analytics, and Azure Data Factory. Работа с Avro более подробно описана далее в этой статье. More information about working with Avro is available later in this article.
Управление окнами в записи Capture windowing
В функции «Сбор» в Центрах событий можно настроить окно управления сбором. Event Hubs Capture enables you to set up a window to control capturing. Это окно с минимальным размером и продолжительностью, для которого предусмотрена политика «побеждает первый». Это означает, что первый обнаруженный триггер активирует операцию записи. This window is a minimum size and time configuration with a «first wins policy,» meaning that the first trigger encountered causes a capture operation. При наличии окна записи размером в 100 МБ и продолжительностью 15 минут для отправки данных со скоростью 1 МБ/с сначала используется окно размера, а затем — окно времени. If you have a fifteen-minute, 100 MB capture window and send 1 MB per second, the size window triggers before the time window. Запись каждой секции выполняется отдельно, а запись выполненного блочного BLOB-объекта осуществляется в процессе записи. Имя блочного BLOB-объекта зависит от времени создания записи. Each partition captures independently and writes a completed block blob at the time of capture, named for the time at which the capture interval was encountered. Соглашение об именовании хранилища выглядит следующим образом: The storage naming convention is as follows:
Значения даты дополняются нулями. Пример имени файла может выглядеть так: The date values are padded with zeroes; an example filename might be:
В случае если двоичный объект из хранилища Azure временно недоступен, запись центров событий сохраняет данные в течение срока хранения данных, настроенного в центре событий, и заполняет данные задним числом, когда учетная запись хранения снова станет доступной. In the event that your Azure storage blob is temporarily unavailable, Event Hubs Capture will retain your data for the data retention period configured on your event hub and back fill the data once your storage account is available again.
Масштабирование единиц пропускной способности Scaling to throughput units
Трафик Центров событий контролируется с помощью единиц пропускной способности. Event Hubs traffic is controlled by throughput units. Одна единица пропускной способности разрешает передачу до 1 МБ/с или 1000 событий/с для входящих данных или до 2 МБ/с или 2000 событий/с для исходящих данных. A single throughput unit allows 1 MB per second or 1000 events per second of ingress and twice that amount of egress. Для Центров событий (цен. категория «Стандартный») можно настроить от 1 до 20 единиц пропускной способности. Кроме того, можно отправить запрос на увеличение квоты в службу поддержки. Standard Event Hubs can be configured with 1-20 throughput units, and you can purchase more with a quota increase support request. Использование единиц пропускной способности свыше приобретенного количества регулируется. Usage beyond your purchased throughput units is throttled. Функция «Сбор» в Центрах событий копирует данные непосредственно из внутреннего хранилища Центров событий. При этом выполняется обход квоты на единицы пропускной способности для исходящего трафика, а этот трафик сохраняется для других средств обработки, например Stream Analytics или Spark. Event Hubs Capture copies data directly from the internal Event Hubs storage, bypassing throughput unit egress quotas and saving your egress for other processing readers, such as Stream Analytics or Spark.
После настройки функция «Сбор» в Центрах событий автоматически запускается при отправке первого события и продолжает работать. Once configured, Event Hubs Capture runs automatically when you send your first event, and continues running. Чтобы позволить операции последующей обработки установить, что процесс выполняется, при отсутствии данных Центры событий записывают пустые файлы. To make it easier for your downstream processing to know that the process is working, Event Hubs writes empty files when there is no data. Этот процесс обеспечивает прогнозируемую периодичность и позволяет получить маркер, необходимый для пакетных обработчиков. This process provides a predictable cadence and marker that can feed your batch processors.
Настройка функции «Сбор» в Центрах событий Setting up Event Hubs Capture
Запись можно настроить при создании концентратора событий с помощью портала Azure или с помощью шаблонов Azure Resource Manager. You can configure Capture at the event hub creation time using the Azure portal, or using Azure Resource Manager templates. Дополнительные сведения см. в следующих статьях: For more information, see the following articles:
Если включить функцию записи для существующего концентратора событий, компонент захватывает события, поступающие в концентратор событий после включения компонента. If you enable the Capture feature for an existing event hub, the feature captures events that arrive at the event hub after the feature is turned on. Он не фиксирует события, которые существовали в концентраторе событий до включения компонента. It doesn’t capture events that existed in the event hub before the feature was turned on.
Просмотр собранных файлов и работа с Avro Exploring the captured files and working with Avro
Функция «Сбор» в Центрах событий создает файлы в формате Avro, как указано в настроенном окне времени. Event Hubs Capture creates files in Avro format, as specified on the configured time window. Эти файлы можно просмотреть в любом средстве, например в обозревателе хранилищ Azure. You can view these files in any tool such as Azure Storage Explorer. Чтобы выполнить определенные действия с этими файлами, их можно скачать локально. You can download the files locally to work on them.
Файлы, созданные записью с помощью функции «Сбор» в Центрах событий, имеют следующую схему Avro. The files produced by Event Hubs Capture have the following Avro schema:
Файлы Avro можно легко просмотреть с помощью средств Avro (JAR-файл) из Apache. An easy way to explore Avro files is by using the Avro Tools jar from Apache. Вы можете также использовать Apache Drill для облегченного взаимодействия с SQL или Apache Spark, чтобы выполнить сложную распределенную обработку принятых данных. You can also use Apache Drill for a lightweight SQL-driven experience or Apache Spark to perform complex distributed processing on the ingested data.
Использование Apache Drill Use Apache Drill
Apache Drill — «механизм SQL-запросов с открытым исходным кодом для исследования больших данных», который может запрашивать структурированные и полуструктурированные данные, независимо от расположения. Apache Drill is an «open-source SQL query engine for Big Data exploration» that can query structured and semi-structured data wherever it is. Этот механизм может работать как отдельный узел или как огромный кластер для высокой производительности. The engine can run as a standalone node or as a huge cluster for great performance.
Доступна встроенная поддержка хранилища BLOB-объектов Azure, которая упрощает запрос данных в файле Avro, как описано в документации: A native support to Azure Blob storage is available, which makes it easy to query data in an Avro file, as described in the documentation:
Чтобы легко запросить захваченные файлы, можно создать и выполнить виртуальную машину с поддержкой Apache с помощью контейнера для доступа к хранилищу BLOB-объектов Azure. To easily query captured files, you can create and execute a VM with Apache Drill enabled via a container to access Azure Blob storage. См. Следующий пример: потоковая передача в масштабе с записью концентраторов событий. See the following sample: Streaming at Scale with Event Hubs Capture.
Использование Apache Spark Use Apache Spark
Apache Spark — это «единый аналитический механизм для крупномасштабной обработки данных». Apache Spark is a «unified analytics engine for large-scale data processing.» Он поддерживает разные языки, включая SQL, и может легко связываться с хранилищем BLOB-объектов Azure. It supports different languages, including SQL, and can easily access Azure Blob storage. Существует несколько вариантов для запуска Apache Spark в Azure, и каждый обеспечивает легкий доступ к хранилищу BLOB-объектов Azure: There are a few options to run Apache Spark in Azure, and each provides easy access to Azure Blob storage:
Использование средств Avro Use Avro Tools
Средства Avro доступны в виде пакета JAR. Avro Tools are available as a jar package. После того как вы загрузили этот JAR-файл, чтобы просмотреть схему определенного файла Avro, выполните следующую команду: After you download the jar file, you can see the schema of a specific Avro file by running the following command:
Эта команда возвращает следующее: This command returns
Средства Avro можно также использовать для преобразования файлов в формат JSON и выполнения других задач обработки. You can also use Avro Tools to convert the file to JSON format and perform other processing.
Чтобы выполнить более расширенную обработку, скачайте и установите Avro для определенной платформы. To perform more advanced processing, download and install Avro for your choice of platform. На момент написания статьи средства Avro доступны для следующих платформ: C, C++, C#, Java, NodeJS, Perl, PHP, Python и Ruby. At the time of this writing, there are implementations available for C, C++, C#, Java, NodeJS, Perl, PHP, Python, and Ruby.
Apache Avro предоставляет руководства по началу работы для платформ Java и Python. Apache Avro has complete Getting Started guides for Java and Python. Дополнительные сведения см. в статье Пошаговое руководство. Использование функции «Сбор» в Центрах событий с Python. You can also read the Getting started with Event Hubs Capture article.
Выставление счета за использование функции «Сбор» в Центрах событий How Event Hubs Capture is charged
Выставление счета за использование функции «Сбор» в Центрах событий осуществляется подобно тарификации за единицы пропускной способности, то есть каждый час. Event Hubs Capture is metered similarly to throughput units: as an hourly charge. Размер платы прямо пропорционален количеству единиц пропускной способности, приобретенных для пространства имен. The charge is directly proportional to the number of throughput units purchased for the namespace. Так же как и с единицами пропускной способности, единицы измерения при использовании функции «Сбор» в Центрах событий можно регулировать, чтобы обеспечить соответствующую производительность. As throughput units are increased and decreased, Event Hubs Capture meters increase and decrease to provide matching performance. Единицы измерения действуют совместно. The meters occur in tandem. Дополнительные сведения о ценах см. на странице цен на Центры событий. For pricing details, see Event Hubs pricing.
Запись не потребляет квоту исходящего трафика, так как она оплачивается отдельно. Capture does not consume egress quota as it is billed separately.
Интеграция со службой «Сетка событий» Integration with Event Grid
Можно создать подписку на Сетку событий Azure с пространством имен Центров событий в качестве источника. You can create an Azure Event Grid subscription with an Event Hubs namespace as its source. В следующем руководстве показано, как создать подписку службы «Сетка событий» с концентратором событий в качестве источника и приложение «функции Azure» в качестве приемника: обработать и перенести захваченные данные концентраторов событий в Azure синапсе Analytics с помощью службы «Сетка событий» и функций Azure. The following tutorial shows you how to create an Event Grid subscription with an event hub as a source and an Azure Functions app as a sink: Process and migrate captured Event Hubs data to a Azure Synapse Analytics using Event Grid and Azure Functions.
Дальнейшие действия Next steps
Функция «Сбор» в Центрах событий — это самый быстрый способ передать данные в Azure. Event Hubs Capture is the easiest way to get data into Azure. С помощью знакомых средств и платформ (Azure Data Lake, фабрики данных Azure и Azure HDInsight) можно выполнять необходимую пакетную обработку и другие операции анализа в любом масштабе. Using Azure Data Lake, Azure Data Factory, and Azure HDInsight, you can perform batch processing and other analytics using familiar tools and platforms of your choosing, at any scale you need.
Узнайте, как включить эту функцию с помощью портала Azure и шаблона Azure Resource Manager: Learn how to enable this feature using the Azure portal and Azure Resource Manager template: