¿Qué es Apache Storm en Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm es un sistema de cálculo de código abierto distribuido, con tolerancia a errores.Apache Storm is a distributed, fault-tolerant, open-source computation system. Puede usar Storm para procesar transmisiones de datos en tiempo real con Hadoop.You can use Storm to process streams of data in real time with Hadoop. Las soluciones de Storm pueden proporcionar también procesamiento de datos garantizado, con la posibilidad de reproducir los datos que no se han procesado correctamente la primera vez.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

¿Por qué usar Apache Storm en HDInsight?Why use Storm on HDInsight?

Storm en HDInsight proporciona las siguientes características:Storm on HDInsight provides the following features:

  • 99% de Acuerdo de Nivel de Servicio (SLA) en tiempo de actividad de Storm: para más información, consulte el documento Acuerdo de nivel de servicio para HDInsight.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Admite la personalización sencilla mediante la ejecución de scripts en el clúster de Storm durante su creación o después de ella.Supports easy customization by running scripts against a Storm cluster during or after creation. Para más información, consulte Personalización de clústeres de HDInsight mediante la acción de scripts (Linux).For more information, see Customize HDInsight clusters using script action.

  • Creación de soluciones en varios lenguajes: puede escribir componentes de Storm en el lenguaje que prefiera, como Java, C# y Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integra Visual Studio con HDInsight para el desarrollo, la administración y la supervisión de topologías de C#.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Para más información, consulte Desarrollo de topologías de C# para Apache Storm en HDInsight con herramientas de Hadoop para Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Admite la interfaz Java de Trident.Supports the Trident Java interface. Puede crear topologías de Storm que admitan el procesamiento de mensajes "exactamente una vez", la persistencia del almacén de datos transaccional y un conjunto de operaciones comunes de Stream Analytics.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Escalado dinámico: puede agregar o quitar nodos de trabajo sin afectar a las topologías de Storm en ejecución.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    Nota

    Debe desactivar y reactivar las topologías en ejecución para aprovechar las ventajas de los nuevos nodos agregados a través de operaciones de escala.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.

  • Crear canalizaciones de streaming con varios servicios de Azure: Storm en HDInsight se integra con otros servicios de Azure como Event Hubs, SQL Database, Azure Storage y Azure Data Lake Store.Create streaming pipelines using multiple Azure services: Storm on HDInsight integrates with other Azure services such as Event Hubs, SQL Database, Azure Storage, and Azure Data Lake Store.

    Para obtener un ejemplo de solución que se integra con los servicios de Azure, vea Process events from Event Hubs with Storm on HDInsight (Procesamiento de eventos desde Event Hubs con Storm en HDInsight).For an example solution that integrates with Azure services, see Process events from Event Hubs with Storm on HDInsight.

Para obtener una lista de empresas que usan Apache Storm con sus soluciones de análisis en tiempo real, consulte las compañías que usan Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Para ver una introducción al uso de Storm, consulte Introducción a Storm en HDInsight.To get started using Storm, see Get started with Storm on HDInsight.

¿Cómo funciona Storm?How does Storm work

Storm ejecuta topologías en lugar de los trabajos de MapReduce que puede que ya conozca.Storm runs topologies instead of the MapReduce jobs that you might be familiar with. Las topologías de Storm están formadas por varios componentes que se organizan en un grafo acíclico dirigido (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Los datos fluyen entre los componentes del grafo.Data flows between the components in the graph. Cada componente consume uno o varios flujos de datos y, opcionalmente, puede emitir uno o varios flujos.Each component consumes one or more data streams, and can optionally emit one or more streams. En el siguiente diagrama, se ilustra cómo fluyen los datos entre componentes de una topología básica de recuento de palabras:The following diagram illustrates how data flows between components in a basic word-count topology:

Ejemplo de cómo se organizan los componentes en una topología de Storm

  • Los componentes spout introducen los datos en una topología ySpout components bring data into a topology. emiten uno o varios flujos en la topología.They emit one or more streams into the topology.

  • Los componentes bolt consumen los flujos emitidos desde spouts u otros bolts.Bolt components consume streams emitted from spouts or other bolts. Además, podrían emitir flujos en la topología.Bolts might optionally emit streams into the topology. También se encargan de escribir datos en un almacenamiento o servicios externos, como HDFS, Kafka o HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

ConfiabilidadReliability

Apache Storm garantiza que cada mensaje entrante se procese siempre por completo, incluso cuando el análisis de datos esté repartido entre cientos de nodos.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

El nodo de Nimbus ofrece una funcionalidad similar a la de JobTracker de Hadoop y asigna tareas a otros nodos de un clúster mediante Zookeeper.The Nimbus node provides functionality similar to the Hadoop JobTracker, and it assigns tasks to other nodes in a cluster through Zookeeper. Los nodos de Zookeeper ofrecen coordinación para un clúster y facilitan la comunicación entre Nimbus y el proceso Supervisor en los nodos de trabajo.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Si un nodo de procesamiento deja de funcionar, se informa al nodo Nimbus y se asigna la tarea y los datos asociados a otro nodo.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

La configuración predeterminada de los clústeres de Apache Storm es que solo tenga un nodo Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm en HDInsight proporciona dos nodos Nimbus.Storm on HDInsight provides two Nimbus nodes. Si se produce un error en el nodo principal, el clúster de Storm cambia al nodo secundario mientras se recupera el nodo principal.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. En el diagrama siguiente se muestra la configuración de flujo de tareas para Storm en HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagrama de nimbus, zookeeper y supervisor

Creación fácilEase of creation

Puede crear un nuevo clúster de Storm en HDInsight en minutos.You can create a new Storm cluster on HDInsight in minutes. Para información sobre la creación de un clúster de Storm, consulte Introducción a Storm en HDInsight.For more information on creating a Storm cluster, see Get started with Storm on HDInsight.

Facilidad de usoEase of use

  • Conectividad de Secure Shell (SSH): puede acceder a los nodos principales de un clúster de Storm a través de Internet mediante SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Puede ejecutar comandos directamente en el clúster mediante SSH.You can run commands directly on your cluster by using SSH.

    Para más información, consulte Uso SSH con HDInsight.For more information, see Use SSH with HDInsight.

  • Conectividad web: todos los clústeres de HDInsight proporcionan la interfaz de usuario web de Ambari.Web connectivity: All HDInsight clusters provide the Ambari web UI. Puede supervisar, configurar y administrar servicios fácilmente en el clúster mediante la interfaz de usuario web de Ambari.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Clústeres de Storm también proporcionan la interfaz de usuario de Storm.Storm clusters also provide the Storm UI. Puede supervisar y administrar topologías de Storm en ejecución desde el explorador mediante la interfaz de usuario de Storm.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Para más información, consulte el artículo Administración de clústeres de HDInsight con la interfaz de usuario web de Ambari y la sección Supervisión y administración: IU de Storm.For more information, see the Manage HDInsight using the Ambari Web UI and Monitor and manage using the Storm UI documents.

  • Azure PowerShell y la CLI de Azure clásica: tanto PowerShell como la CLI clásica proporcionan utilidades de línea de comandos que puede usar desde su sistema cliente para trabajar con HDInsight y otros servicios de Azure.Azure PowerShell and Azure Classic CLI: PowerShell and classic CLI both provide command-line utilities that you can use from your client system to work with HDInsight and other Azure services.

  • Integración de Visual Studio: las Herramientas de Azure Data Lake para Visual Studio incluyen plantillas de proyecto para la creación de topologías de Storm en C# mediante la plataforma SCP.Net.Visual Studio integration: Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.Net framework. Las herramientas de Data Lake también ofrecen herramientas para implementar, supervisar y administrar soluciones con Storm en HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Para más información, consulte Desarrollo de topologías de C# para Apache Storm en HDInsight con herramientas de Hadoop para Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integración con otros servicios de AzureIntegration with other Azure services

Soporte técnicoSupport

Storm en HDInsight incluye soporte técnico completo y continuo de nivel de empresa.Storm on HDInsight comes with full enterprise-level continuous support. Storm en HDInsight también tiene un Acuerdo de Nivel de Servicio del 99,9 %.Storm on HDInsight also has an SLA of 99.9 percent. Eso significa que Microsoft garantiza que un clúster de Storm dispondrá de conectividad externa como mínimo el 99,9 % del tiempo.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Para más información, consulte Soporte técnico de Azure.For more information, see Azure support.

Casos de uso de Apache StormApache Storm use cases

A continuación, se indican algunos de los escenarios habituales en los que se podría usar Storm en HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet de las cosas (IoT)Internet of Things (IoT)
  • Detección de fraudesFraud detection
  • Análisis socialSocial analytics
  • Extracción, transformación y carga de datos (ETL)Extraction, transformation, and loading (ETL)
  • Supervisión de redesNetwork monitoring
  • SearchSearch
  • Mobile EngagementMobile engagement

Para más información sobre escenarios del mundo real, consulte el documento sobre cómo usan Storm las empresas.For information about real-world scenarios, see the How companies are using Storm document.

DesarrolloDevelopment

Los desarrolladores de .NET pueden diseñar e implementar topologías en C# mediante las Herramientas de Data Lake para Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. También puede crear topologías híbridas que usen los componentes de Java y C#.You can also create hybrid topologies that use Java and C# components.

Para más información, consulte Desarrollo de topologías de C# para Storm en HDInsight con Visual Studio.For more information, see Develop C# topologies for Storm on HDInsight using Visual Studio.

También puede desarrollar soluciones de Java mediante el IDE de su elección.You can also develop Java solutions by using the IDE of your choice. Para más información, consulte Desarrollo de topologías de Java para Storm en HDInsight.For more information, see Develop Java topologies for Storm on HDInsight.

Python también puede usarse para desarrollar componentes de Storm.Python can also be used to develop Storm components. Para más información, consulte Desarrollo de topologías Apache Storm con Python en HDInsight.For more information, see Develop Storm topologies using Python on HDInsight.

Patrones de desarrollo comunesCommon development patterns

Procesamiento de mensajes garantizadoGuaranteed message processing

Apache Storm puede proporcionar diferentes niveles de procesamiento de mensajes garantizado.Apache Storm can provide different levels of guaranteed message processing. Por ejemplo, una aplicación básica de Storm puede garantizar un procesamiento una vez al menos y Trident puede garantizar exactamente el procesamiento una vez.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Para obtener más información, consulte las Garantías en el procesamiento de los datos en apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Un patrón habitual es leer una tupla de entrada, emitir cero o más tuplas y confirmar la tupla de entrada inmediatamente al final del método de ejecución.The pattern of reading an input tuple, emitting zero or more tuples, and then acking the input tuple immediately at the end of the execute method is common. Storm proporciona la interfaz IBasicBolt para automatizar este patrón.Storm provides the IBasicBolt interface to automate this pattern.

CombinacionesJoins

El modo en que se unen las secuencias de datos varía entre aplicaciones.How data streams are joined varies between applications. Por ejemplo, puede unir las tuplas procedentes de varios flujos en uno nuevo o unir únicamente los lotes de tuplas de una ventana específica.For example, you can join each tuple from multiple streams into one new stream, or you can join only batches of tuples for a specific window. En cualquier caso, se puede realizar la unión mediante el uso de fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. La agrupación de los campos es una forma de definir cómo se enrutan las tuplas a los bolts.Field grouping is a way of defining how tuples are routed to bolts.

En el siguiente ejemplo de Java, se usa fieldsGrouping para enrutar las tuplas que se originan en los componentes "1", "2" y "3" al bolt MyJoiner:In the following Java example, fieldsGrouping is used to route tuples that originate from components "1", "2", and "3" to the MyJoiner bolt:

builder.setBolt("join", new MyJoiner(), parallelism) .fieldsGrouping("1", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("2", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("3", new Fields("joinfield1", "joinfield2"));

Instancias de BatchBatches

Apache Storm proporciona un mecanismo de temporización interno conocido como "tupla tick".Apache Storm provides an internal timing mechanism known as a "tick tuple." Puede establecer con qué frecuencia se genera una tupla tick en la topología.You can set how often a tick tuple is emitted in your topology.

Para ver un ejemplo del uso de una tupla tick desde un componente de C#, consulte PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

Memorias cachéCaches

El almacenamiento en caché de memoria interna se usa a menudo como mecanismo para acelerar el procesamiento, porque mantiene en memoria los activos usados con mayor frecuencia.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Como una topología se distribuye entre varios nodos, y varios proceso dentro de cada nodo, debe considerar el uso de fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Use fieldsGrouping para garantizar que las tuplas que contienen los campos que se usan para la búsqueda en caché se enruten siempre al mismo proceso.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Esta funcionalidad de agrupación evita la duplicación de entradas de caché entre procesos.This grouping functionality avoids duplication of cache entries across processes.

Secuencia "N principal"Stream "top N"

Cuando la topología depende de calcular un valor de "N principal", calcule este valor en paralelo.When your topology depends on calculating a top N value, calculate the top N value in parallel. A continuación, combine la salida de esos cálculos en un valor global.Then merge the output from those calculations into a global value. Esta operación puede realizarse mediante fieldsGrouping para enrutar por campo para el procesamiento paralelo.This operation can be done by using fieldsGrouping to route by field for parallel processing. A continuación, puede enrutar a un bolt que determina de manera global el valor de N principal.Then you can route to a bolt that globally determines the top N value.

Para ver un ejemplo de cálculo de un valor de "N principal", consulte el ejemplo de RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

RegistroLogging

Storm utiliza Apache Log4j para registrar información.Storm uses Apache Log4j to log information. De forma predeterminada, se registra una gran cantidad de datos y puede que sea difícil ordenar la información.By default, a large amount of data is logged, and it can be difficult to sort through the information. Puede incluir un archivo de configuración de registro como parte de la topología de Storm para controlar el comportamiento de registro.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Para ver una topología de ejemplo que muestre cómo configurar el registro, consulte el ejemplo para Storm en HDInsight mostrado en el artículo Desarrolle topologías basadas en Java para una aplicación básica de recuento de palabras con Apache Storm y Maven en HDInsight .For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Pasos siguientesNext steps

Aprenda más sobre las soluciones de análisis en tiempo real con Storm en HDInsight:Learn more about real-time analytics solutions with Storm on HDInsight: