Implementación y administración de topologías de Apache Storm en Azure HDInsightDeploy and manage Apache Storm topologies on Azure HDInsight

En este documento, aprenderá los aspectos básicos de administración y supervisión de las topologías de Apache Storm que se ejecutan en clústeres de Storm en HDInsight.In this document, learn the basics of managing and monitoring Apache Storm topologies running on Storm on HDInsight clusters.

Requisitos previosPrerequisites

Envío de una topología: Visual StudioSubmit a topology: Visual Studio

Las herramientas de HDInsight puede utilizarse para enviar las topologías de C# o híbridas al clúster de Storm.The HDInsight Tools can be used to submit C# or hybrid topologies to your Storm cluster. Los pasos siguientes usan una aplicación de muestra.The following steps use a sample application. Para obtener información sobre cómo crear o utilizar las herramientas de HDInsight, consulte Desarrollo de las topologías de C# mediante las herramientas de HDInsight para Visual Studio.For information about creating on using the HDInsight Tools, see Develop C# topologies using the HDInsight Tools for Visual Studio.

  1. Si todavía no tiene instalada la versión más reciente de las herramientas de Data Lake para Visual Studio, consulte Introducción al uso de Herramientas de Data Lake para Visual Studio.If you have not already installed the latest version of the Data Lake tools for Visual Studio, see Get started using Data Lake Tools for Visual Studio.

    Nota

    Herramientas de Data Lake para Visual Studio anteriormente se llamaban Herramientas de HDInsight para Visual Studio.The Data Lake Tools for Visual Studio were formerly called the HDInsight Tools for Visual Studio.

    Herramientas de Data Lake para Visual Studio están incluidas en la carga de trabajo de Azure para Visual Studio 2017.Data Lake Tools for Visual Studio are included in the Azure Workload for Visual Studio 2017.

  2. Abra Visual Studio, seleccione Archivo > Nuevo > Proyecto.Open Visual Studio, select File > New > Project.

  3. En el cuadro de diálogo Nuevo proyecto, expanda Instalado > Plantillas y seleccione HDInsight.In the New Project dialog box, expand Installed > Templates, and then select HDInsight. En la lista de plantillas, seleccione Muestra de Storm.From the list of templates, select Storm Sample. En la parte inferior del cuadro de diálogo, escriba un nombre para la aplicación.At the bottom of the dialog box, type a name for the application.

    imagen

  4. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Submit to Storm on HDInsight (Enviar a Storm en HDInsight).In Solution Explorer, right-click the project, and select Submit to Storm on HDInsight.

    Nota

    Si se le solicita, introduzca las credenciales de inicio de sesión de su suscripción de Azure.If prompted, enter the login credentials for your Azure subscription. Si tiene más de una suscripción, inicie sesión en la que contenga el clúster de Storm en HDInsight.If you have more than one subscription, log in to the one that contains your Storm on HDInsight cluster.

  5. Seleccione el clúster de Storm en HDInsight desde el menú desplegable Storm Cluster (Clúster de Storm y seleccione Submit (Enviar).Select your Storm on HDInsight cluster from the Storm Cluster drop-down list, and then select Submit. Puede supervisar si el envío es correcto mediante la ventana Salida .You can monitor whether the submission is successful by using the Output window.

Envío de una topología: SSH y el comando StormSubmit a topology: SSH and the Storm command

  1. Use SSH para conectarse al clúster de HDInsight.Use SSH to connect to the HDInsight cluster. Reemplace USERNAME por el nombre de su inicio de sesión de SSH.Replace USERNAME the name of your SSH login. Reemplace CLUSTERNAME por el nombre del clúster de HDInsight.Replace CLUSTERNAME with your HDInsight cluster name:

     ssh USERNAME@CLUSTERNAME-ssh.azurehdinsight.net
    

    Para obtener más información sobre cómo establecer una conexión mediante SSH a su clúster de HDInsight, consulte Uso de SSH con HDInsight.For more information on using SSH to connect to your HDInsight cluster, see Use SSH with HDInsight.

  2. Use el comando siguiente para iniciar una topología de ejemplo:Use the following command to start an example topology:

     storm jar /usr/hdp/current/storm-client/contrib/storm-starter/storm-starter-topologies-*.jar org.apache.storm.starter.WordCountTopology WordCount
    

    Este comando inicia la topología WordCount de ejemplo en el clúster.This command starts the example WordCount topology on the cluster. Esta topología generará frases de forma aleatoria y contará la aparición de cada palabra en las oraciones.This topology randomly generates sentences, and then counts the occurrence of each word in the sentences.

    Nota

    Al enviar la topología al clúster, primero debe copiar el archivo jar que contiene el clúster antes de usar el comando storm.When submitting topology to the cluster, you must first copy the jar file containing the cluster before using the storm command. Para copiar el archivo en el clúster, puede usar el comando scp.To copy the file to the cluster, you can use the scp command. Por ejemplo: scp FILENAME.jar USERNAME@CLUSTERNAME-ssh.azurehdinsight.net:FILENAME.jarFor example, scp FILENAME.jar USERNAME@CLUSTERNAME-ssh.azurehdinsight.net:FILENAME.jar

    El ejemplo de WordCount, y otros ejemplos de inicio de Storm, ya están incluidos en el clúster en /usr/hdp/current/storm-client/contrib/storm-starter/.The WordCount example, and other storm starter examples, are already included on your cluster at /usr/hdp/current/storm-client/contrib/storm-starter/.

Envío de una topología: de manera programáticaSubmit a topology: programmatically

Puede implementar mediante programación una topología con el servicio Nimbus.You can programmatically deploy a topology using the Nimbus service. https://github.com/Azure-Samples/hdinsight-java-deploy-storm-topology proporciona un ejemplo de aplicación Java que muestra cómo implementar e iniciar una topología a través del servicio Nimbus.https://github.com/Azure-Samples/hdinsight-java-deploy-storm-topology provides an example Java application that demonstrates how to deploy and start a topology through the Nimbus service.

Supervisión y administración: Visual StudioMonitor and manage: Visual Studio

Cuando una topología se envía correctamente con Visual Studio, aparece la vista Topologías de Storm.When a topology is submitted using Visual Studio, the Storm Topologies view appears. Seleccione la topología de la lista para ver información acerca de la topología de ejecución.Select the topology from the list to view information about the running topology.

supervisión de visual studio

Nota

También puede ver las topologías de Storm en el Explorador de servidores expandiendo Azure > HDInsight y, después, haciendo clic con el botón derecho en un clúster de Storm en HDInsight y seleccionando View Storm Topologies (Ver topologías de Storm).You can also view Storm Topologies from Server Explorer by expanding Azure > HDInsight, and then right-clicking a Storm on HDInsight cluster, and selecting View Storm Topologies.

Seleccione la forma de los spouts o bolts para ver información sobre estos componentes.Select the shape for the spouts or bolts to view information about these components. Se abrirá una ventana nueva para cada elemento seleccionado.A new window opens for each item selected.

Desactivar y reactivarDeactivate and reactivate

Al desactivar una topología se pone en pausa hasta que se elimine o se reactive.Deactivating a topology pauses it until it is killed or reactivated. Para realizar estas operaciones, use los botones Desactivar y Reactivar que se encuentra en la parte superior del Resumen de las topologías.To perform these operations, use the Deactivate and Reactivate buttons at the top of the Topology Summary.

ReequilibrarRebalance

El reequilibrio de una topología permite que el sistema revise el paralelismo de la topología.Rebalancing a topology allows the system to revise the parallelism of the topology. Por ejemplo, si cambió el tamaño del clúster para agregar más notas, el reequilibrio permite que una topología vea los nodos nuevos.For example, if you have resized the cluster to add more notes, rebalancing allows a topology to see the new nodes.

Para reequilibrar una topología, use el botón Reequilibrar que se encuentra en la parte superior del Resumen de las topologías.To rebalance a topology, use the Rebalance button at the top of the Topology Summary.

Advertencia

El reequilibrio de una topología desactiva primero la topología, redistribuye los trabajadores de manera uniforme en el clúster y luego devuelve finalmente la topología al estado en el que se encontraba antes de que se produjera el reequilibrio.Rebalancing a topology first deactivates the topology, then redistributes workers evenly across the cluster, then finally returns the topology to the state it was in before rebalancing occurred. Por tanto, si la topología estaba activa, se activa de nuevo.So if the topology was active, it becomes active again. Si se desactivó, seguirá desactivada.If it was deactivated, it remains deactivated.

Terminación de una topologíaKill a topology

Las topologías de Storm continúan ejecutándose hasta que se detengan o se elimine el clúster.Storm topologies continue running until they are stopped or the cluster is deleted. Para detener una topología, use el botón Terminar que se encuentra en la parte superior del Resumen de las topologías.To stop a topology, use the Kill button at the top of the Topology Summary.

Supervisión y administración: SSH y el comando StormMonitor and manage: SSH and the Storm command

La utilidad storm le permite trabajar con topologías en ejecución desde la línea de comandos.The storm utility allows you to work with running topologies from the command line. Use storm -h para obtener una lista completa de comandos.Use storm -h for a full list of commands.

Topologías de listaList topologies

Use el siguiente comando para enumerar todas las topologías en ejecución:Use the following command to list all running topologies:

storm list

Este comando devuelve información similar al texto siguiente:This command returns information similar to the following text:

Topology_name        Status     Num_tasks  Num_workers  Uptime_secs
-------------------------------------------------------------------
WordCount            ACTIVE     29         2            263

Desactivar y reactivarDeactivate and reactivate

Al desactivar una topología se pone en pausa hasta que se elimine o se reactive.Deactivating a topology pauses it until it is killed or reactivated. Use el comando siguiente para desactivar y reactivar:Use the following command to deactivate and reactivate:

storm Deactivate TOPOLOGYNAME

storm Activate TOPOLOGYNAME

Eliminar una topología de ejecuciónKill a running topology

Las topologías de Storm, una vez iniciadas, se siguen ejecutando hasta que se detengan.Storm topologies, once started, continue running until stopped. Para detener una topología, use el siguiente comando:To stop a topology, use the following command:

storm kill TOPOLOGYNAME

ReequilibrarRebalance

El reequilibrio de una topología permite que el sistema revise el paralelismo de la topología.Rebalancing a topology allows the system to revise the parallelism of the topology. Por ejemplo, si cambió el tamaño del clúster para agregar más notas, el reequilibrio permite que una topología vea los nodos nuevos.For example, if you have resized the cluster to add more notes, rebalancing allows a topology to see the new nodes.

Advertencia

El reequilibrio de una topología desactiva primero la topología, redistribuye los trabajadores de manera uniforme en el clúster y luego devuelve finalmente la topología al estado en el que se encontraba antes de que se produjera el reequilibrio.Rebalancing a topology first deactivates the topology, then redistributes workers evenly across the cluster, then finally returns the topology to the state it was in before rebalancing occurred. Por tanto, si la topología estaba activa, se activa de nuevo.So if the topology was active, it becomes active again. Si se desactivó, seguirá desactivada.If it was deactivated, it remains deactivated.

storm rebalance TOPOLOGYNAME

Supervisión y administración: UI de StormMonitor and manage: Storm UI

La interfaz de usuario de Storm ofrece una interfaz web para trabajar con topologías en ejecución y se incluye en el clúster de HDInsight.The Storm UI provides a web interface for working with running topologies, and is included on your HDInsight cluster. Para ver la IU de Storm, use un explorador web para abrir https://CLUSTERNAME.azurehdinsight.net/stormui , donde CLUSTERNAME es el nombre del clúster.To view the Storm UI, use a web browser to open https://CLUSTERNAME.azurehdinsight.net/stormui, where CLUSTERNAME is the name of your cluster.

Nota

Si se le pide que ofrezca un nombre de usuario y una contraseña, escriba el administrador de clústeres (admin) y la contraseña que usó al crear el clúster.If asked to provide a user name and password, enter the cluster administrator (admin) and password that you used when creating the cluster.

Página principalMain page

La página principal de la interfaz de usuario de Storm ofrece la siguiente información:The main page of the Storm UI provides the following information:

  • Resumen del clúster: información básica sobre el clúster de Storm.Cluster summary: Basic information about the Storm cluster.
  • Resumen de las topologías: una lista de las topologías en ejecución.Topology summary: A list of running topologies. Use los vínculos de esta sección para obtener más información sobre las topologías específicas.Use the links in this section to view more information about specific topologies.
  • Resumen de supervisor: información acerca del supervisor de Storm.Supervisor summary: Information about the Storm supervisor.
  • Configuración de Nimbus: configuración de Nimbus del clúster.Nimbus configuration: Nimbus configuration for the cluster.

Resumen de las topologíasTopology summary

Si selecciona un vínculo desde la sección Resumen de la topología , se mostrará la siguiente información sobre la topología.Selecting a link from the Topology summary section displays the following information about the topology:

  • Resumen de las topologías: información básica sobre la topología.Topology summary: Basic information about the topology.

  • Acciones de topología: acciones de administración que puede realizar para la topología.Topology actions: Management actions that you can perform for the topology.

    • Activar: reanuda el procesamiento de una topología desactivada.Activate: Resumes processing of a deactivated topology.

    • Desactivar: pausa una topología en ejecución.Deactivate: Pauses a running topology.

    • Reequilibrar: ajusta el paralelismo de la topología.Rebalance: Adjusts the parallelism of the topology. Debe volver a equilibrar las topologías en ejecución después de haber cambiado el número de nodos del clúster.You should rebalance running topologies after you have changed the number of nodes in the cluster. Esta operación permite que la topología ajuste el paralelismo para compensar el mayor o menor número de nodos del clúster.This operation allows the topology to adjust parallelism to compensate for the increased or decreased number of nodes in the cluster.

      Para más información, consulte la entrada de blog Understanding the parallelism of an Apache Storm topology (Entender el paralelismo de una topología de Apache Storm).For more information, see Understanding the parallelism of an Apache Storm topology.

    • Terminar: finaliza una topología de Storm tras el tiempo de espera especificado.Kill: Terminates a Storm topology after the specified timeout.

  • Estadísticas de topología: estadísticas sobre la topología.Topology stats: Statistics about the topology. Para establecer el período de las entradas restantes en la página, use los vínculos que se encuentran en la columna Ventana.To set the timeframe for the remaining entries on the page, use the links in the Window column.

  • Spouts: los spouts que usa la topología.Spouts: The spouts used by the topology. Use los vínculos de esta sección para obtener más información acerca de spouts específicos.Use the links in this section to view more information about specific spouts.

  • Bolts: los bolts que usa la topología.Bolts: The bolts used by the topology. Use los vínculos de esta sección para obtener más información acerca de bolts específicos.Use the links in this section to view more information about specific bolts.

  • Configuración de la topología: la configuración de la topología seleccionada.Topology configuration: The configuration of the selected topology.

Resumen de spouts y boltsSpout and Bolt summary

Si se selecciona un spout en la sección Spouts o Bolts, se muestra la siguiente información sobre el elemento seleccionado:Selecting a spout from the Spouts or Bolts sections displays the following information about the selected item:

  • Resumen de componentes: información básica acerca del spout o bolt.Component summary: Basic information about the spout or bolt.
  • Estadísticas de spouts/bolts: estadísticas sobre el spout o bolt.Spout/Bolt stats: Statistics about the spout or bolt. Para establecer el período de las entradas restantes en la página, use los vínculos que se encuentran en la columna Ventana.To set the timeframe for the remaining entries on the page, use the links in the Window column.
  • Estadísticas de entrada (solo bolt): información sobre los flujos de entrada consumidos por el bolt.Input stats (bolt only): Information about the input streams consumed by the bolt.
  • Estadísticas de salida: información sobre los flujos de datos emitidos por este spout o bolt.Output stats: Information about the streams emitted by the spout or bolt.
  • Ejecutores: información sobre las instancias del spout o bolt.Executors: Information about the instances of the spout or bolt. Seleccione la entrada Puerto de un ejecutor específico para ver un registro de información de diagnóstico generado por esta instancia.Select the Port entry for a specific executor to view a log of diagnostic information produced for this instance.
  • Errores: cualquier información de error de este spout o bolt.Errors: Any error information for the spout or bolt.

Supervisión y administración: API DE RESTMonitor and manage: REST API

La interfaz de usuario de Storm se basa en la API de REST, lo que permite realizar una funcionalidad similar de administración y supervisión mediante la API de REST.The Storm UI is built on top of the REST API, so you can perform similar management and monitoring functionality by using the REST API. Puede usar la API de REST para crear herramientas personalizadas para administrar y supervisar las topologías de Storm.You can use the REST API to create custom tools for managing and monitoring Storm topologies.

Para más información, consulte la API REST de la interfaz de usuario de Apache Storm.For more information, see Apache Storm UI REST API. La siguiente información es específica para usar la API de REST con Apache Storm en HDInsight.The following information is specific to using the REST API with Apache Storm on HDInsight.

Importante

La API de REST de Storm no está públicamente disponible a través de Internet y debe tener acceso mediante un túnel SSH en el nodo principal del clúster de HDInsight.The Storm REST API is not publicly available over the internet, and must be accessed using an SSH tunnel to the HDInsight cluster head node. Para información sobre la creación y el uso de un túnel SSH, consulte Uso de la tunelización SSH para tener acceso a la interfaz de usuario web de Apache Ambari, ResourceManager, JobHistory, NameNode, Apache Oozie y otras interfaces de usuario web.For information on creating and using an SSH tunnel, see Use SSH Tunneling to access Apache Ambari web UI, ResourceManager, JobHistory, NameNode, Apache Oozie, and other web UIs.

URI baseBase URI

El URI base de la API de REST en los clústeres de HDInsight basado en Linux está disponible en el nodo principal en https://HEADNODEFQDN:8744/api/v1/ .The base URI for the REST API on Linux-based HDInsight clusters is available on the head node at https://HEADNODEFQDN:8744/api/v1/. El nombre de dominio del nodo principal se genera durante la creación de clúster y no es estático.The domain name of the head node is generated during cluster creation and is not static.

Puede encontrar el nombre de dominio completo (FQDN) del nodo principal del clúster de varias maneras distintas:You can find the fully qualified domain name (FQDN) for the cluster head node in several different ways:

  • Desde una sesión de SSH: use el comando headnode -f desde una sesión SSH conectada al clúster.From an SSH session: Use the command headnode -f from an SSH session to the cluster.
  • Desde la web de Ambari: seleccione Servicios en la parte superior de la pantalla y, luego, seleccione Storm.From Ambari Web: Select Services from the top of the page, then select Storm. En la pestaña Resumen, seleccione Storm UI Server (Servidor de IU de Storm).From the Summary tab, select Storm UI Server. El FQDN del nodo que hospeda la IU de Storm y la API de REST se muestra en la parte superior de la página.The FQDN of the node that hosts the Storm UI and REST API is displayed at the top of the page.
  • Desde la API REST de Ambari: use el comando curl -u admin -G "https:\//CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/services/STORM/components/STORM_UI_SERVER" para recuperar información sobre el nodo en que se ejecutan la interfaz de usuario de Storm y la API REST.From Ambari REST API: Use the command curl -u admin -G "https:\//CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/services/STORM/components/STORM_UI_SERVER" to retrieve information about the node that the Storm UI and REST API are running on. Reemplace CLUSTERNAME por el nombre del clúster.Replace CLUSTERNAME with the cluster name. Cuando se le solicite, escriba la contraseña de la cuenta de inicio de sesión (administrador).When prompted, enter the password for the login (admin) account. En la respuesta, la entrada "host_name" contiene el FQDN del nodo.In the response, the "host_name" entry contains the FQDN of the node.

AuthenticationAuthentication

Las solicitudes a la API de REST deben usar la autenticación básica; use el nombre y la contraseña de administrador del clúster de HDInsight.Requests to the REST API must use basic authentication, so you use the HDInsight cluster administrator name and password.

Nota

Dado que la autenticación básica se envía mediante texto no cifrado, siempre debe usar HTTPS para proteger las comunicaciones con el clúster.Because basic authentication is sent by using clear text, you should always use HTTPS to secure communications with the cluster.

Valores devueltosReturn values

La información que devuelve la API de REST solo puede utilizarse desde el clúster.Information that is returned from the REST API may only be usable from within the cluster. Por ejemplo, no se puede obtener el acceso desde Internet al nombre de dominio completo (FQDN) devuelto para servidores de Apache Zookeeper.For example, the fully qualified domain name (FQDN) returned for Apache ZooKeeper servers is not accessible from the Internet.

Pasos siguientesNext Steps

Aprenda a desarrollar topologías basadas en Java con Apache Maven.Learn how to Develop Java-based topologies using Apache Maven.

Para una lista con más topologías de ejemplo, consulte Topologías de ejemplo para Apache Storm en HDInsight.For a list of more example topologies, see Example topologies for Apache Storm on HDInsight.