Azure Stream Analytics en IoT EdgeAzure Stream Analytics on IoT Edge

Azure Stream Analytics (ASA) en IoT Edge permite a los desarrolladores desarrollar inteligencia analítica casi en tiempo real más próxima a los dispositivos IoT para que puedan desbloquear el valor total de los datos generados por los 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. Azure Stream Analytics está diseñado con los objetivos de baja latencia, resiliencia, uso eficiente de ancho de banda y cumplimiento.Azure Stream Analytics is designed for low latency, resiliency, efficient use of bandwidth, and compliance. Las empresas pueden implementar ahora la lógica de control cerca de las operaciones industriales y complementar los análisis de macrodatos que se realizan en la nube.Enterprises can now deploy control logic close to the industrial operations and complement Big Data analytics done in the cloud.

Azure Stream Analytics en IoT Edge se ejecuta en el marco de Azure IoT Edge.Azure Stream Analytics on IoT Edge runs within the Azure IoT Edge framework. Una vez que se crea el trabajo en ASA, puede implementarlo y administrarlo mediante IoT Hub.Once the job is created in ASA, you can deploy and manage it using IoT Hub.

EscenariosScenarios

Diagrama general de IoT Edge

  • Comando de baja latencia y control: Por ejemplo, los sistemas de seguridad en la fabricación deben responder a los datos operativos con una latencia muy baja.Low-latency command and control: For example, manufacturing safety systems must respond to operational data with ultra-low latency. Con ASA en IoT Edge, puede analizar los datos de sensores casi en tiempo real y emitir comandos cuando detecte anomalías para detener una máquina o desencadenar alertas.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.
  • Conectividad limitada a la nube: Los sistemas críticos, como un equipo de minería remoto, buques conectados o las perforaciones petrolíferas en mar abierto necesitan analizar y reaccionar ante los datos, incluso cuando la conectividad a la nube sea 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. Con el ASA, la lógica de streaming funciona independientemente de la conectividad de red y puede elegir lo que envía a la nube para su posterior procesamiento o almacenamiento.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.
  • Ancho de banda limitado: El volumen de datos que generan los motores de jet o los automóviles conectados puede ser tan grande que los datos se deben filtrar o procesar con anterioridad antes de enviarlos a la nube.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. ASA puede filtrar o agregar los datos que se envían a la nube.Using ASA, you can filter or aggregate the data that needs to be sent to the cloud.
  • Cumplimiento: El cumplimiento de las normas puede requerir que se agreguen algunos datos o que se oculte su identidad localmente antes de enviarlos a la nube.Compliance: Regulatory compliance may require some data to be locally anonymized or aggregated before being sent to the cloud.

Trabajos de Edge en Azure Stream AnalyticsEdge jobs in Azure Stream Analytics

¿Qué es un trabajo "perimetral"?What is an "edge" job?

Los trabajos de ASA en Edge se ejecutan en contenedores implementados en dispositivos de Azure IoT Edge.ASA Edge jobs run in containers deployed to Azure IoT Edge devices. Constan de dos partes:They are composed of two parts:

  1. Una parte en la nube que es responsable de la definición del trabajo: los usuarios definen las entradas, la salida, las consultas y otros valores (eventos que no funcionan, etc.) en la nube.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. Un módulo que se ejecuta en dispositivos IoT.A module running on your IoT devices. Contiene el motor de ASA y recibe la definición del trabajo de la nube.It contains the ASA engine and receives the job definition from the cloud.

ASA usa IoT Hub para implementar los trabajos perimetrales en los dispositivos.ASA uses IoT Hub to deploy edge jobs to device(s). Para más información acerca de la implementación de IoT Edge, consulte aquí.More information about IoT Edge deployment can be seen here.

Trabajo en Edge de Azure Stream Analytics

Instrucciones de instalaciónInstallation instructions

Los valores posibles se describen en la tabla siguiente.The high-level steps are described in the following table. En las secciones siguientes encontrará más información.More details are given in the following sections.

PasoStep NotasNotes
11 Creación de un contenedor de almacenamientoCreate a storage container Los contenedores de almacenamiento se utilizan para guardar la definición de trabajo donde pueden obtenerla sus dispositivos de IoT.Storage containers are used to save your job definition where they can be accessed by your IoT devices.
Todos los contenedor de almacenamiento existente se pueden reutilizar.You can reuse any existing storage container.
22 Creación de un trabajo perimetral de ASACreate an ASA edge job Cree un nuevo trabajo y seleccione Edge como entorno de hospedaje.Create a new job, select Edge as hosting environment.
Estos trabajos se crean o administran desde la nube y se ejecutan en sus propios dispositivos de IoT Edge.These jobs are created/managed from the cloud, and run on your own IoT Edge devices.
33 Configuración de un entorno de IoT Edge en los dispositivosSetup your IoT Edge environment on your device(s) Instrucciones para Windows o Linux.Instructions for Windows or Linux.
44 Implementación de ASA en dispositivos de IoT EdgeDeploy ASA on your IoT Edge device(s) La definición del trabajo ASA se exporta al contenedor de almacenamiento que creó anteriormente.ASA job definition is exported to the storage container created earlier.

Puede seguir este tutorial paso a paso para implementar su primer trabajo de ASA en IoT Edge.You can follow this step-by-step tutorial to deploy your first ASA job on IoT Edge. El vídeo siguiente debería ayudarle a entender el proceso para ejecutar un trabajo de Stream Analytics en un dispositivo con IoT Edge:The following video should help you understand the process to run a Stream Analytics job on an IoT edge device:

Creación de un contenedor de almacenamientoCreate a storage container

Se requiere un contenedor de almacenamiento es necesario para exportar la consulta ASA compilada y la configuración del trabajo.A storage container is required in order to export the ASA compiled query and the job configuration. Se utiliza para configurar la imagen de Docker ASA con una consulta específica.It is used to configure the ASA Docker image with your specific query.

  1. Siga estas instrucciones para crear una cuenta de almacenamiento desde Azure Portal.Follow these instructions to create a storage account from the Azure portal. Puede mantener todas las opciones predeterminadas para usar esta cuenta con ASA.You can keep all default options to use this account with ASA.
  2. En la cuenta recién creada, cree un contenedor de almacenamiento de blobs:In the newly created storage account, create a blob storage container:
    1. Haga clic en Blobs y, después, en + Contenedor.Click on Blobs, then + Container.
    2. Escriba un nombre y mantenga el contenedor como Privado.Enter a name and keep the container as Private.

Creación de un trabajo de Edge de ASACreate an ASA Edge job

Nota

Este tutorial se centra en la creación de un trabajo ASA mediante Azure Portal.This tutorial focuses on ASA job creation using Azure portal. También puede usar el complemento de Visual Studio para crear un trabajo de Edge de ASAYou can also use Visual Studio plugin to create an ASA Edge job

  1. En Azure Portal, cree un nuevo "trabajo de Stream Analytics".From the Azure portal, create a new "Stream Analytics job". Vínculo directo para crear un nuevo trabajo de ASA aquí.Direct link to create a new ASA job here.

  2. En la pantalla de creación, seleccione Edge como entorno de hospedaje (vea la imagen siguiente)In the creation screen, select Edge as hosting environment (see the following picture)

    Creación del trabajo de Stream Analytics en Edge

  3. Definición de trabajoJob Definition

    1. Definir flujos de entrada.Define Input Stream(s). Defina uno o varios flujos de entrada para el trabajo.Define one or several input streams for your job.
    2. Definición de datos de referencia (opcional).Define Reference data (optional).
    3. Definir flujos de salida.Define Output Stream(s). Defina uno o varios flujos de salida para el trabajo.Define one or several outputs streams for your job.
    4. Definir consulta.Define query. Defina la consulta ASA en la nube mediante el editor insertado.Define the ASA query in the cloud using the inline editor. El compilador comprueba automáticamente la sintaxis habilitada para el perímetro de ASA.The compiler automatically checks the syntax enabled for ASA edge. La consulta también se puede probar mediante la carga de datos de ejemplo.You can also test your query by uploading sample data.
  4. Establezca la información del contenedor de almacenamiento en el menú Configuración de IoT Edge.Set the storage container information in the IoT Edge settings menu.

  5. Establecimiento de valores opcionalesSet optional settings

    1. Ordenación de eventos.Event ordering. Puede configurar la directiva de fuera de servicio en el portal.You can configure out-of-order policy in the portal. La documentación está disponible aquí.Documentation is available here.
    2. Configuración regional.Locale. Defina el formato de internalización.Set the internalization format.

Nota

Cuando se crea una implementación, ASA exporta la definición del trabajo a un contenedor de almacenamiento.When a deployment is created, ASA exports the job definition to a storage container. Esta definición de trabajo siguen siendo la misma mientras dure una implementación.This job definition remain the same during the duration of a deployment. En consecuencia, si desea actualizar un trabajo que se ejecuta en el perímetro, es preciso que lo edite en ASA y que, a continuación, cree una nueva implementación en IoT Hub.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.

Configuración de un entorno de IoT Edge en los dispositivosSet up your IoT Edge environment on your device(s)

Los trabajos de Edge se pueden implementar en dispositivos que ejecuten Azure IoT Edge.Edge jobs can be deployed on devices running Azure IoT Edge. Para hacerlo, es preciso seguir estos pasos:For this, you need to follow these steps:

  • Cree una instancia de IoT Hub.Create an Iot Hub.
  • Instale Docker y el entorno de ejecución de Azure IoT Edge en los dispositivos perimetrales.Install Docker and IoT Edge runtime on your edge devices.
  • Configure los dispositivos como dispositivos de IoT Edge en IoT Hub.Set your devices as IoT Edge devices in IoT Hub.

Estos pasos se describen en la documentación de IoT Edge para Windows o Linux.These steps are described in the IoT Edge documentation for Windows or Linux.

Implementación de ASA en dispositivos de IoT EdgeDeployment ASA on your IoT Edge device(s)

Adición de ASA a una implementaciónAdd ASA to your deployment
  • En Azure Portal, abra IoT Hub, vaya a IoT Edge y haga clic en el dispositivo que va a ser el destino de esta implementación.In the Azure portal, open IoT Hub, navigate to IoT Edge and click on the device you want to target for this deployment.
  • Seleccione Establecer módulos, + Agregar y, finalmente, Módulo de Azure Stream Analytics.Select Set modules, then select + Add and choose Azure Stream Analytics Module.
  • Seleccione la suscripción y el trabajo Edge de ASA que ha creado.Select the subscription and the ASA Edge job that you created. Haga clic en Guardar.Click Save. Adición de un módulo de ASA a una implementaciónAdd ASA module in your deployment

Nota

Durante este paso, ASA crea una carpeta llamada "EdgeJobs" en el contenedor de almacenamiento (si aún no existe).During this step, ASA creates a folder named "EdgeJobs" in the storage container (if it does not exist already). Para cada implementación, se crea una nueva subcarpeta en la carpeta "EdgeJobs".For each deployment, a new subfolder is created in the "EdgeJobs" folder. Al implementar el trabajo en dispositivos de IoT Edge, ASA crea una firma de acceso compartido (SAS) para el archivo de definición del trabajo.When you deploy your job to IoT Edge devices, ASA creates a shared access signature (SAS) for the job definition file. La clave SAS se transmite de forma segura a los dispositivos de IoT Edge que usen un dispositivo gemelo.The SAS key is securely transmitted to the IoT Edge devices using device twin. Esta clave expira a los tres años de haberse creado.The expiration of this key is three years from the day of its creation. Cuando se actualiza un trabajo de IoT Edge, la firma SAS cambia, pero la versión de la imagen permanece como está.When you update an IoT Edge job, the SAS will change, but the image version will not change. Después de actualizar, siga el flujo de trabajo de implementación; se registra una notificación de actualización en el dispositivo.Once you Update, follow the deployment workflow, and an update notification is logged on the device.

Para más información sobre las implementaciones de IoT Edge, consulte esta página.For more information about IoT Edge deployments, see to this page.

Configuración de rutasConfigure routes

IoT Edge proporciona una manera de enrutar de forma declarativa mensajes tanto entre los módulos como entre los módulos e IoT Hub.IoT Edge provides a way to declaratively route messages between modules, and between modules and IoT Hub. La sintaxis completa se describe aquí.The full syntax is described here. Los nombres de las entradas y salidas creadas en el trabajo de ASA se pueden utilizar como puntos de conexión para el enrutamiento.Names of the inputs and outputs created in the ASA job can be used as endpoints for routing.

EjemploExample
{
    "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\")"
    }
}

En este ejemplo se muestran las rutas del escenario descrito en la siguiente ilustración.This example shows the routes for the scenario described in the following picture. Contiene un trabajo perimetral denominado "ASA", con una entrada denominada "temperature" y una salida denominada "alert".It contains an edge job called "ASA", with an input named "temperature" and an output named "alert". Ejemplo de diagrama de enrutamiento de mensajesDiagram example of message routing

En este ejemplo se definen las siguientes rutas:This example defines the following routes:

  • Todos los mensaje de tempSensor se envían al módulo denominado ASA, a la entrada denominada temperature.Every message from the tempSensor is sent to the module named ASA to the input named temperature,
  • Todas las salidas del módulo de ASA se envían a la instancia de IoT Hub vinculada a este dispositivo ($upstream).All outputs of ASA module are sent to the IoT Hub linked to this device ($upstream),
  • Todas las salidas del módulo de ASA se envían al punto de conexión control de tempSensor.All outputs of ASA module are sent to the control endpoint of the tempSensor.

Información técnicaTechnical information

Limitaciones actuales de los trabajos de IoT Edge en comparación con los trabajos en la nubeCurrent limitations for IoT Edge jobs compared to cloud jobs

El objetivo es tener paridad entre los trabajos de IoT Edge y los trabajos en la nube.The goal is to have parity between IoT Edge jobs and cloud jobs. Se admite la mayoría de las características del lenguaje de consulta SQL, lo que permite ejecutar la misma lógica en la nube y en IoT Edge.Most SQL query language features are supported, enabling to run the same logic on both cloud and IoT Edge. Sin embargo, las siguientes características aún no se admiten en los trabajos perimetrales:However the following features are not yet supported for edge jobs:

  • Funciones definidas por el usuario (UDF) en JavaScript.User-defined functions (UDF) in JavaScript. Las UDF están disponibles en C# para trabajos de IoT Edge (versión preliminar).UDF are available in C# for IoT Edge jobs (preview).
  • Agregados definidos por el usuario (UDA).User-defined aggregates (UDA).
  • Funciones de Azure MLAzure ML functions
  • Uso de más de 14 agregados en un solo paso.Using more than 14 aggregates in a single step.
  • Formato AVRO para la entrada y salida.AVRO format for input/output. En este momento solo se admiten CSV y JSON.At this time, only CSV and JSON are supported.
  • Los siguientes operadores SQL:The following SQL operators:
    • PARTITION BYPARTITION BY
    • GetMetadataPropertyValueGetMetadataPropertyValue

Requisitos de runtime y hardwareRuntime and hardware requirements

Para ejecutar ASA en IoT Edge, se necesitan dispositivos que puedan ejecutar Azure IoT Edge.To run ASA on IoT Edge, you need devices that can run Azure IoT Edge.

ASA y Azure IoT Edge usan contenedores de Docker para proporcionar una solución portátil que se ejecuta en sistemas operativos que admiten múltiples hosts (Windows, Linux).ASA and Azure IoT Edge use Docker containers to provide a portable solution that runs on multiple host operating systems (Windows, Linux).

ASA en IoT Edge está disponible en forma de imágenes de Windows y Linux que se ejecutan en arquitecturas x86-64 o ARM (Advanced RISC Machines).ASA on IoT Edge is made available as Windows and Linux images, running on both x86-64 or ARM (Advanced RISC Machines) architectures.

Entrada y salidaInput and output

Flujos de entrada y salidaInput and Output Streams

Los trabajos de Edge de ASA pueden obtener entradas y salidas de otros módulos que se ejecutan en dispositivos de IoT Edge.ASA Edge jobs can get inputs and outputs from other modules running on IoT Edge devices. Para conectarse a determinados módulos, y desde ellos, puede establecer la configuración de enrutamiento en el momento de la implementación.To connect from and to specific modules, you can set the routing configuration at deployment time. Se puede encontrar más información en la documentación de composición del módulo de IoT Edge.More information is described on the IoT Edge module composition documentation.

En las entradas y salidas, se admiten los formatos CSV y JSON.For both inputs and outputs, CSV and JSON formats are supported.

Por cada flujo de entrada y salida que se crea en un trabajo de ASA, se crea un punto de conexión correspondiente en el módulo implementado.For each input and output stream you create in your ASA job, a corresponding endpoint is created on your deployed module. Estos puntos de conexión se pueden utilizar en las rutas de la implementación.These endpoints can be used in the routes of your deployment.

En este momento, los únicos tipos de entrada y salida de flujo admitidos son Centro de Microsoft Edge.At present, the only supported stream input and stream output types are Edge Hub. La entrada de referencia admite el tipo de archivo de referencia.Reference input supports reference file type. Se puede llegar a otras salidas mediante un trabajo de nube de nivel inferior.Other outputs can be reached using a cloud job downstream. Por ejemplo, un trabajo de Stream Analytics hospedado en Edge envía una salida al Centro de Microsoft Edge, el cual puede enviar luego una salida a IoT Hub.For example, a Stream Analytics job hosted in Edge sends output to Edge Hub, which can then send output to IoT Hub. Puede usar un segundo trabajo de Azure Stream Analytics hospedado en la nube con entrada desde IoT Hub y salida a Power BI u otro tipo de salida.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.

Datos de referenciaReference data

Los datos de referencia (que también se conocen como tabla de búsqueda) son un conjunto finito de datos estáticos o que, por naturaleza, cambian lentamente.Reference data (also known as a lookup table) is a finite data set that is static or slow changing in nature. Se utilizan para realizar búsquedas o para ponerlos en correlación con su flujo de datos.It is used to perform a lookup or to correlate with your data stream. Para usar los datos de referencia en el trabajo de Azure Stream Analytics, por lo general usará una instrucción JOIN de los datos de referencia en la 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 obtener más información, vea Uso de datos de referencia para las búsquedas en Stream Analytics.For more information, see the Using reference data for lookups in Stream Analytics.

Solo se admiten datos de referencia locales.Only local reference data is supported. Cuando un trabajo se implementa en el dispositivo IoT Edge, carga los datos de referencia de la ruta de acceso del archivo definida por el usuario.When a job is deployed to IoT Edge device, it loads reference data from the user defined file path.

Para crear un trabajo con datos de referencia en Edge:To create a job with reference data on Edge:

  1. Cree una nueva entrada para el trabajo.Create a new input for your job.

  2. Elija Datos de referencia como tipo de origen.Choose Reference data as the Source Type.

  3. Tenga un archivo de datos de referencia preparado en el dispositivo.Have a reference data file ready on the device. Para un contenedor de Windows, coloque el archivo de datos de referencia en la unidad local y comparta la unidad local con el contenedor de Docker.For a Windows container, put the reference data file on the local drive and share the local drive with the Docker container. Para un contenedor de Linux, cree un volumen de Docker y rellene el archivo de datos en el volumen.For a Linux container, create a Docker volume and populate the data file to the volume.

  4. Establezca la ruta de acceso del archivo.Set the file path. Para un sistema operativo host de Windows y un contenedor de Windows, use la ruta de acceso absoluta: E:\<PathToFile>\v1.csv.For Windows Host OS and Windows container, use the absolute path: E:\<PathToFile>\v1.csv. Para un sistema operativo host de Windows y un contenedor de Linux, o un sistema operativo Linux y un contenedor de Linux, use la ruta de acceso en el volumen: <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.

Nueva entrada de datos de referencia para el trabajo de Azure Stream Analytics en IoT Edge

Los datos de referencia en la actualización de IoT Edge se desencadenan mediante una implementación.The reference data on IoT Edge update is triggered by a deployment. Una vez activado, el módulo ASA toma los datos actualizados sin necesidad de detener el trabajo en ejecución.Once triggered, the ASA module picks the updated data without stopping the running job.

Hay dos maneras de actualizar los datos de referencia:There are two ways to update the reference data:

  • Actualizar la ruta de acceso de los datos de referencia en el trabajo ASA desde Azure Portal.Update reference data path in your ASA job from Azure portal.
  • Actualizar la implementación de IoT Edge.Update the IoT Edge deployment.

Licencia y avisos de tercerosLicense and third-party notices

Información de la imagen del módulo de Azure Stream AnalyticsAzure Stream Analytics module image information

Esta información de versión se actualizó por última vez el 27 de junio de 2019:This version information was last updated on 2019-06-27:

  • Imagen: 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

    • imagen base: microsoft/dotnet:2.1.6-runtime-alpine3.7base image: microsoft/dotnet:2.1.6-runtime-alpine3.7
    • plataforma:platform:
      • arquitectura: amd64architecture: amd64
      • so: linuxos: linux
  • Imagen: 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

    • imagen base: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7base image: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7
    • plataforma:platform:
      • arquitectura: armarchitecture: arm
      • so: linuxos: linux
  • Imagen: 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

    • imagen base: microsoft/dotnet:2.1.6-runtime-nanoserver-1809base image: microsoft/dotnet:2.1.6-runtime-nanoserver-1809
    • plataforma:platform:
      • arquitectura: amd64architecture: amd64
      • so: windowsos: windows

Obtención de ayudaGet help

Para más ayuda, pruebe el foro de Azure Stream Analytics.For further assistance, try the Azure Stream Analytics forum.

Pasos siguientesNext steps