O Stream Analytics do Azure no IoT EdgeAzure Stream Analytics on IoT Edge

O ASA (Azure Stream Analytics) no IoT Edge oferece aos desenvolvedores a capacitação necessária para implantar inteligência analítica quase em tempo real próxima à dispositivos IoT, assim eles podem desbloquear o valor integral de dados gerados por dispositivos.Azure Stream Analytics (ASA) on IoT Edge empowers developers to deploy near-real-time analytical intelligence closer to IoT devices so that they can unlock the full value of device-generated data. O Azure Stream Analytics foi projetado para baixa latência, resiliência, uso eficiente da largura de banda e conformidade.Azure Stream Analytics is designed for low latency, resiliency, efficient use of bandwidth, and compliance. Agora as empresas podem implantar a lógica de controle perto das operações industriais e complementar a análise de Big Data feita na nuvem.Enterprises can now deploy control logic close to the industrial operations and complement Big Data analytics done in the cloud.

Azure Stream Analytics no IoT Edge executado dentro da estrutura do Azure IoT Edge.Azure Stream Analytics on IoT Edge runs within the Azure IoT Edge framework. Depois que o trabalho é criado no ASA, você pode implantá-lo e gerenciá-lo usando um Hub IoT.Once the job is created in ASA, you can deploy and manage it using IoT Hub.

CenáriosScenarios

Diagrama de alto nível do IoT Edge

  • Controle e comando de baixa latência: por exemplo, sistemas de segurança de fabricação devem reagir aos dados operacionais com latência extremamente baixa.Low-latency command and control: For example, manufacturing safety systems must respond to operational data with ultra-low latency. Com o ASA no IoT Edge, você pode analisar dados de sensor quase em tempo real e emitir comandos ao detectar anomalias para interromper um computador ou disparar gatilho.With ASA on IoT Edge, you can analyze sensor data in near real-time, and issue commands when you detect anomalies to stop a machine or trigger alerts.
  • Conectividade limitada com a nuvem: sistemas críticos, como equipamentos de mineração remotos, embarcações conectadas ou perfuração offshore, precisam analisar e reagir aos dados, mesmo quando a conectividade de nuvem é intermitente.Limited connectivity to the cloud: Mission critical systems, such as remote mining equipment, connected vessels, or offshore drilling, need to analyze and react to data even when cloud connectivity is intermittent. Com o ASA, a lógica de fluxo é executado independentemente da conectividade de rede, e você pode escolher o que envia para a nuvem para processamento adicional ou armazenamento.With ASA, your streaming logic runs independently of the network connectivity and you can choose what you send to the cloud for further processing or storage.
  • Largura de banda limitada: o volume de dados produzidos por motores a jato ou carros conectados pode ser tão grande que os dados devem ser filtrados ou pré-processados antes de serem enviados para a nuvem.Limited bandwidth: The volume of data produced by jet engines or connected cars can be so large that data must be filtered or pre-processed before sending it to the cloud. Usando o ASA, você pode filtrar ou agregar os dados que precisam ser enviados para a nuvem.Using ASA, you can filter or aggregate the data that needs to be sent to the cloud.
  • Conformidade: a conformidade normativa pode exigir que alguns dados sejam mantidos anônimos localmente ou agregados antes de serem enviados para a nuvem.Compliance: Regulatory compliance may require some data to be locally anonymized or aggregated before being sent to the cloud.

Trabalhos de borda no Azure Stream AnalyticsEdge jobs in Azure Stream Analytics

O que é um trabalho de "borda"?What is an "edge" job?

Trabalhos ASA Edge são executados em contêineres implantados nos dispositivos do Azure IoT Edge.ASA Edge jobs run in containers deployed to Azure IoT Edge devices. Eles são compostos de duas partes:They are composed of two parts:

  1. Uma parte de nuvem que é responsável pela definição de trabalho: os usuários definem entradas, saída, consulta e outras configurações (eventos fora de ordem etc.) na nuvem.A cloud part that is responsible for job definition: users define inputs, output, query, and other settings (out of order events, etc.) in the cloud.
  2. Um módulo em execução em seus dispositivos IoT.A module running on your IoT devices. Ele contém o mecanismo do ASA e recebe a definição de trabalho da nuvem.It contains the ASA engine and receives the job definition from the cloud.

O ASA usa o Hub IoT para implantar os trabalhos de borda para o(s) dispositivo(s).ASA uses IoT Hub to deploy edge jobs to device(s). Mais informações sobre a implantação do IoT Edge podem ser vistas aqui.More information about IoT Edge deployment can be seen here.

Trabalho do Azure Stream Analytics no Edge

Instruções de instalaçãoInstallation instructions

As etapas de alto nível são descritas na tabela a seguir.The high-level steps are described in the following table. Mais detalhes são fornecidos nas seções a seguir.More details are given in the following sections.

EtapaStep ObservaçõesNotes
11 Criar um contêiner de armazenamentoCreate a storage container Contêineres de armazenamento são usados para salvar a definição de trabalho em que eles podem ser acessados por dispositivos IoT.Storage containers are used to save your job definition where they can be accessed by your IoT devices.
Você pode reutilizar qualquer contêiner de armazenamento existente.You can reuse any existing storage container.
22 Criar um trabalho de borda ASACreate an ASA edge job Crie um novo trabalho e selecione Borda como ambiente de hospedagem.Create a new job, select Edge as hosting environment.
Esses trabalhos são criados/gerenciados na nuvem e executados em seus próprios dispositivos IoT Edge.These jobs are created/managed from the cloud, and run on your own IoT Edge devices.
33 Configurar o ambiente IoT Edge nos dispositivosSetup your IoT Edge environment on your device(s) Instruções para Windows ou Linux.Instructions for Windows or Linux.
44 Implantar o ASA em dispositivos IoT EdgeDeploy ASA on your IoT Edge device(s) A definição de trabalho ASA é exportada para o contêiner de armazenamento criado anteriormente.ASA job definition is exported to the storage container created earlier.

Você pode seguir este tutorial passo a passo para implantar seu primeiro trabalho ASA no IoT Edge.You can follow this step-by-step tutorial to deploy your first ASA job on IoT Edge. O vídeo a seguir deve ajudar a compreender o processo para executar um trabalho do Azure Stream Analytics em um dispositivo de borda IoT:The following video should help you understand the process to run a Stream Analytics job on an IoT edge device:

Criar um contêiner de armazenamentoCreate a storage container

Um contêiner de armazenamento é necessário para exportar a consulta compilada por ASA e a configuração de trabalho.A storage container is required in order to export the ASA compiled query and the job configuration. Ele é usado para configurar a imagem do Docker ASA com sua consulta específica.It is used to configure the ASA Docker image with your specific query.

  1. Execute estas instruções para criar uma conta de armazenamento por meio do portal do Azure.Follow these instructions to create a storage account from the Azure portal. Você pode manter todas as opções padrão para usar essa conta com o ASA.You can keep all default options to use this account with ASA.
  2. Na conta de armazenamento recém-criada, crie um contêiner de armazenamento de blobs:In the newly created storage account, create a blob storage container:
    1. Clique em Blobs e em + Contêiner.Click on Blobs, then + Container.
    2. Insira um nome e mantenha o contêiner como Privado.Enter a name and keep the container as Private.

Criar um trabalho de Borda ASACreate an ASA Edge job

Observação

Este tutorial se concentra na criação do trabalho ASA usando o Portal do Azure.This tutorial focuses on ASA job creation using Azure portal. Você também pode usar o plug-in do Visual Studio para criar um trabalho de Borda do ASAYou can also use Visual Studio plugin to create an ASA Edge job

  1. No portal do Azure, crie um novo "trabalho Stream Analytics".From the Azure portal, create a new "Stream Analytics job". Link direto para criar um novo trabalho ASA aqui.Direct link to create a new ASA job here.

  2. Na tela de criação, selecione Edge como ambiente de hospedagem (veja a imagem a seguir)In the creation screen, select Edge as hosting environment (see the following picture)

    Crie trabalho do Stream Analytics no Edge

  3. Definição de trabalhoJob Definition

    1. Definir Fluxo(s) de Entrada.Define Input Stream(s). Defina um ou mais fluxos de entrada para o trabalho.Define one or several input streams for your job.
    2. Defina Dados de referência (opcionais).Define Reference data (optional).
    3. Definir Fluxo(s) de Saída.Define Output Stream(s). Defina um ou vários fluxos de saída para o trabalho.Define one or several outputs streams for your job.
    4. Definir consulta.Define query. Defina a consulta ASA na nuvem usando o editor embutido.Define the ASA query in the cloud using the inline editor. O compilador verifica automaticamente a sintaxe habilitada para a borda ASA.The compiler automatically checks the syntax enabled for ASA edge. Você também pode testar a consulta carregando os dados de exemplo.You can also test your query by uploading sample data.
  4. Defina as informações de contêiner de armazenamento no menu Configurações do IoT Edge.Set the storage container information in the IoT Edge settings menu.

  5. Definir configurações opcionaisSet optional settings

    1. Ordenação de eventos.Event ordering. Você pode configurar a política fora de ordem no portal.You can configure out-of-order policy in the portal. A documentação está disponível aqui.Documentation is available here.
    2. Localidade.Locale. Defina o formato de internacionalização.Set the internalization format.

Observação

Quando uma implantação é criada, o ASA exporta a definição de trabalho para um contêiner de armazenamento.When a deployment is created, ASA exports the job definition to a storage container. Esta definição de trabalho permanece a mesma em toda a duração da implantação.This job definition remain the same during the duration of a deployment. Como consequência, se você quiser atualizar um trabalho em execução na borda, precisará editar o trabalho no ASA e criar uma nova implantação no Hub IoT.As a consequence, if you want to update a job running on the edge, you need to edit the job in ASA, and then create a new deployment in IoT Hub.

Configurar o ambiente IoT Edge no(s) dispositivo(s)Set up your IoT Edge environment on your device(s)

Os trabalhos de borda podem ser implantados em dispositivos que executam o Azure IoT Edge.Edge jobs can be deployed on devices running Azure IoT Edge. Para isso, você precisa seguir estas etapas:For this, you need to follow these steps:

  • Crie um Hub IoT.Create an Iot Hub.
  • Instale o docker e o tempo de execução do IoT Edge nos dispositivos de borda.Install Docker and IoT Edge runtime on your edge devices.
  • Defina os dispositivos como Dispositivos IoT Edge no Hub IoT.Set your devices as IoT Edge devices in IoT Hub.

Essas etapas são descritas na documentação do IoT Edge para Windows ou Linux.These steps are described in the IoT Edge documentation for Windows or Linux.

Implantação do ASA em dispositivos IoT EdgeDeployment ASA on your IoT Edge device(s)

Adicionar ASA à sua implantaçãoAdd ASA to your deployment
  • No portal do Azure, abra o Hub IoT, navegue até IoT Edge e clique no dispositivo que você deseja como destino para essa implantação.In the Azure portal, open IoT Hub, navigate to IoT Edge and click on the device you want to target for this deployment.
  • Selecione Definir módulos, em seguida, selecione + Adicionar e escolha Módulo do Azure Stream Analytics.Select Set modules, then select + Add and choose Azure Stream Analytics Module.
  • Selecione a assinatura e o trabalho do ASA no Edge criado.Select the subscription and the ASA Edge job that you created. Clique em Salvar.Click Save. Adicionar módulo ASA em sua implantaçãoAdd ASA module in your deployment

Observação

Durante esta etapa, o ASA cria uma pasta chamada "EdgeJobs" no contêiner de armazenamento (se ela ainda não existe).During this step, ASA creates a folder named "EdgeJobs" in the storage container (if it does not exist already). Para cada tipo de implantação, uma nova subpasta é criada na pasta "EdgeJobs".For each deployment, a new subfolder is created in the "EdgeJobs" folder. Quando você implanta seu trabalho em dispositivos IoT Edge, o ASA cria uma assinatura de acesso compartilhado (SAS) para o arquivo de definição de trabalho.When you deploy your job to IoT Edge devices, ASA creates a shared access signature (SAS) for the job definition file. A chave SAS é transmitida com segurança para os dispositivos IoT Edge usando o dispositivo gêmeo.The SAS key is securely transmitted to the IoT Edge devices using device twin. A expiração dessa chave é de três anos a partir do dia de sua criação.The expiration of this key is three years from the day of its creation. Quando você atualiza um trabalho de borda de IoT, a SAS será alterado, mas a versão da imagem não será alterado.When you update an IoT Edge job, the SAS will change, but the image version will not change. Depois que você atualizar, siga o fluxo de trabalho de implantação e uma notificação de atualização é registrada no dispositivo.Once you Update, follow the deployment workflow, and an update notification is logged on the device.

Para obter mais detalhes sobre implantações do IoT Edge, confira esta página.For more information about IoT Edge deployments, see to this page.

Configurar rotasConfigure routes

O IoT Edge fornece uma maneira para rotear de modo declarativo as mensagens entre módulos e entre módulos e o Hub IoT.IoT Edge provides a way to declaratively route messages between modules, and between modules and IoT Hub. A sintaxe completa é descrita aqui.The full syntax is described here. Os nomes das entradas e saídas criadas no trabalho ASA podem ser usados como pontos de extremidade para roteamento.Names of the inputs and outputs created in the ASA job can be used as endpoints for routing.

ExemploExample
{
    "routes": {
        "sensorToAsa":   "FROM /messages/modules/tempSensor/* INTO BrokeredEndpoint(\"/modules/ASA/inputs/temperature\")",
        "alertsToCloud": "FROM /messages/modules/ASA/* INTO $upstream",
        "alertsToReset": "FROM /messages/modules/ASA/* INTO BrokeredEndpoint(\"/modules/tempSensor/inputs/control\")"
    }
}

Este exemplo mostra as rotas para o cenário descrito na figura a seguir.This example shows the routes for the scenario described in the following picture. Ele contém um trabalho de borda chamado "ASA", com uma entrada denominada "temperatura" e uma saída nomeada "alerta".It contains an edge job called "ASA", with an input named "temperature" and an output named "alert". Exemplo de diagrama de roteamento de mensagensDiagram example of message routing

Este exemplo define as seguintes rotas:This example defines the following routes:

  • Cada mensagem do tempSensor é enviada para o módulo chamado ASA para a entrada denominada temperatura,Every message from the tempSensor is sent to the module named ASA to the input named temperature,
  • Todas as saídas do módulo ASA são enviadas para o Hub IoT vinculado a este dispositivo (upstream$),All outputs of ASA module are sent to the IoT Hub linked to this device ($upstream),
  • Todas as saídas do módulo ASA são enviadas para o ponto de extremidade control de tempSensor.All outputs of ASA module are sent to the control endpoint of the tempSensor.

Informações técnicasTechnical information

Limitações atuais dos trabalhos do IoT Edge em comparação com os trabalhos de nuvemCurrent limitations for IoT Edge jobs compared to cloud jobs

O objetivo é ter a paridade entre os trabalhos do IoT Edge e os trabalhos de nuvem.The goal is to have parity between IoT Edge jobs and cloud jobs. A maioria dos recursos de linguagem de consulta SQL têm suporte, permitindo que para executar a mesma lógica na nuvem e do IoT Edge.Most SQL query language features are supported, enabling to run the same logic on both cloud and IoT Edge. No entanto, os recursos a seguir ainda não têm suporte para trabalhos de borda:However the following features are not yet supported for edge jobs:

  • Funções definidas pelo usuário (UDF) no JavaScript.User-defined functions (UDF) in JavaScript. Os UDF estão disponíveis no C# para trabalhos do IoT Edge (versão prévia).UDF are available in C# for IoT Edge jobs (preview).
  • Agregações definidas pelo usuário (UDA).User-defined aggregates (UDA).
  • Funções do Azure MLAzure ML functions
  • Uso de mais de 14 agregações em uma única etapa.Using more than 14 aggregates in a single step.
  • Formato AVRO para entrada/saída.AVRO format for input/output. No momento, há suporte apenas para CSV e JSON.At this time, only CSV and JSON are supported.
  • Os seguintes operadores SQL:The following SQL operators:
    • PARTIÇÃO PORPARTITION BY
    • GetMetadataPropertyValueGetMetadataPropertyValue

Requisitos de hardware e de tempo de execuçãoRuntime and hardware requirements

Para executar o ASA no IoT Edge, você precisa de dispositivos que possam executar o Azure IoT Edge.To run ASA on IoT Edge, you need devices that can run Azure IoT Edge.

O ASA e o Azure IoT Edge usam contêineres Docker para fornecer uma solução portátil que é executada em vários sistemas operacionais host (Windows, Linux).ASA and Azure IoT Edge use Docker containers to provide a portable solution that runs on multiple host operating systems (Windows, Linux).

O ASA no IoT Edge é disponibilizado como imagens do Windows e do Linux, em execução em arquiteturas x86-64 ou ARM (Máquinas RISC Avançadas).ASA on IoT Edge is made available as Windows and Linux images, running on both x86-64 or ARM (Advanced RISC Machines) architectures.

Entrada e saídaInput and output

Fluxos de Entrada e SaídaInput and Output Streams

Os trabalhos ASA Edge podem obter entradas e saídas de outros módulos em execução em dispositivos de IoT Edge.ASA Edge jobs can get inputs and outputs from other modules running on IoT Edge devices. Para se conectar de e para módulos específicos, você pode definir a configuração de roteamento no momento da implantação.To connect from and to specific modules, you can set the routing configuration at deployment time. Mais informações são descritas na documentação do módulo de composição do IoT Edge.More information is described on the IoT Edge module composition documentation.

Para entradas e saídas, há suporte para os formatos CSV e JSON.For both inputs and outputs, CSV and JSON formats are supported.

Para cada fluxo de entrada e saída que você cria no trabalho ASA, um ponto de extremidade correspondente é criado no módulo implantado.For each input and output stream you create in your ASA job, a corresponding endpoint is created on your deployed module. Esses pontos de extremidade podem ser usados nas rotas da implantação.These endpoints can be used in the routes of your deployment.

No momento, os únicos tipos de entrada e saída de fluxo com suporte são do Hub do Edge.At present, the only supported stream input and stream output types are Edge Hub. A entrada de referência dá suporte ao tipo de arquivo de referência.Reference input supports reference file type. Outras saídas podem ser contatadas por meio de um downstream do trabalho de nuvem.Other outputs can be reached using a cloud job downstream. Por exemplo, um trabalho do Stream Analytics hospedado no Edge envia a saída para o Hub do Edge, que pode então enviar a saída para o Hub IoT.For example, a Stream Analytics job hosted in Edge sends output to Edge Hub, which can then send output to IoT Hub. Você pode usar um segundo trabalho do Azure Stream Analytics hospedado em nuvem com entrada do Hub IoT e saída para o Power BI ou outro tipo de saída.You can use a second cloud hosted Azure Stream Analytics job with input from IoT Hub and output to Power BI or another output type.

Dados de referênciaReference data

Os dados de referência (também conhecidos como uma tabela de pesquisa) são um conjunto de dados finito estático ou com alteração lenta por natureza.Reference data (also known as a lookup table) is a finite data set that is static or slow changing in nature. Ele é usado para executar uma pesquisa ou para se correlacionar ao fluxo de dados.It is used to perform a lookup or to correlate with your data stream. Para usar dados de referência no seu trabalho do Azure Stream Analytics geralmente é preciso usar uma União de dados de referência em sua consulta.To make use of reference data in your Azure Stream Analytics job, you will generally use a Reference Data JOIN in your query. Para obter mais informações, consulte o Usando dados de referência para pesquisas no Stream Analytics.For more information, see the Using reference data for lookups in Stream Analytics.

Apenas dados de referência local são suportados.Only local reference data is supported. Quando um trabalho é implantado no dispositivo IoT Edge, ele carrega dados de referência do caminho do arquivo definido pelo usuário.When a job is deployed to IoT Edge device, it loads reference data from the user defined file path.

Para criar um trabalho com dados de referência no Edge:To create a job with reference data on Edge:

  1. Crie uma nova entrada para seu trabalho.Create a new input for your job.

  2. Escolha Dados de referência como o Tipo de Fonte.Choose Reference data as the Source Type.

  3. Tenha um arquivo de dados de referência pronto no dispositivo.Have a reference data file ready on the device. Para um contêiner do Windows, coloque o arquivo de dados de referência na unidade local e compartilhe a unidade local com o contêiner Docker.For a Windows container, put the reference data file on the local drive and share the local drive with the Docker container. Para um contêiner do Linux, crie um volume do Docker e preencha o arquivo de dados para o volume.For a Linux container, create a Docker volume and populate the data file to the volume.

  4. Defina o caminho do arquivo.Set the file path. Para o sistema operacional de Host do Windows e o contêiner do Windows, use o caminho absoluto: E:\<PathToFile>\v1.csv.For Windows Host OS and Windows container, use the absolute path: E:\<PathToFile>\v1.csv. Para um sistema operacional de Host do Windows e um contêiner do Linux ou um sistema operacional do Linux e um contêiner do Linux, use o caminho no volume: <VolumeName>/file1.txt.For a Windows Host OS and Linux container or a Linux OS and Linux container, use the path in the volume: <VolumeName>/file1.txt.

Nova entrada de dados de referência para o job do Azure Stream Analytics no IoT Edge

Os dados de referência na atualização do IoT Edge são acionados por uma implantação.The reference data on IoT Edge update is triggered by a deployment. Uma vez acionado, o módulo ASA seleciona os dados atualizados sem interromper o trabalho em execução.Once triggered, the ASA module picks the updated data without stopping the running job.

Existem duas maneiras de atualizar os dados de referência:There are two ways to update the reference data:

  • Atualize o caminho de dados de referência em sua tarefa ASA do portal do Azure.Update reference data path in your ASA job from Azure portal.
  • Atualize a implantação do IoT Edge.Update the IoT Edge deployment.

Licenças e notificações de terceirosLicense and third-party notices

Informações de imagem de módulo do Stream Analytics do AzureAzure Stream Analytics module image information

Última atualização: essas informações de versão de 2019-06-27:This version information was last updated on 2019-06-27:

  • Imagem: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-amd64Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-amd64

    • imagem base: microsoft/dotnet:2.1.6-runtime-alpine3.7base image: microsoft/dotnet:2.1.6-runtime-alpine3.7
    • Plataforma:platform:
      • architecture: amd64architecture: amd64
      • os: linuxos: linux
  • Imagem: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-arm32v7Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-arm32v7

    • imagem base: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7base image: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7
    • Plataforma:platform:
      • arquitetura: armarchitecture: arm
      • os: linuxos: linux
  • Imagem: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-windows-amd64Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-windows-amd64

    • imagem base: microsoft/dotnet:2.1.6-runtime-nanoserver-1809base image: microsoft/dotnet:2.1.6-runtime-nanoserver-1809
    • Plataforma:platform:
      • architecture: amd64architecture: amd64
      • sistema operacional: windowsos: windows

Obter ajudaGet help

Para obter mais assistência, experimente o fórum do Azure Stream Analytics.For further assistance, try the Azure Stream Analytics forum.

Próximas etapasNext steps