Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-04-14 GMT+08:00

Principios básicos de Storm

Apache Storm es un sistema de procesamiento de datos en tiempo real distribuido, confiable y tolerante a fallas. En Storm, una estructura de datos en forma de gráfico llamada topología necesita ser diseñada primero para la computación en tiempo real. La topología se enviará a un clúster. A continuación, un nodo máster del clúster distribuye códigos y asigna tareas a los nodos de trabajo. Una topología contiene dos funciones: spout and bolt. Un spout envía mensajes y envía flujos de datos en tuples. Un bolt convierte los flujos de datos y realiza operaciones de computación y filtrado. El bolt puede enviar datos aleatoriamente a otros bolts. Los tuples enviados por un spout son matrices incambiables y se asignan a pares de clave-valor fijos.

Figura 1 Arquitectura del sistema de Storm

La lógica de procesamiento de servicio está encapsulada en la topología de Storm. Una topología es un conjunto de componentes de spout (origen de datos) y bolt (procesamiento lógico) que se conectan mediante Stream Groupings en modo DAG. Todos los componentes (spout and bolt) de una topología trabajan en paralelo. En una topología, puede especificar el paralelismo para cada nodo. A continuación, Storm asigna tareas en el clúster para que la computación mejore las capacidades de procesamiento del sistema.

Figura 2 Topología

Storm es aplicable al análisis en tiempo real, la computación continua y la extracción, transformación y carga distribuida (ETL). Tiene las siguientes ventajas:

  • Amplias aplicaciones
  • Alta escalabilidad
  • Cero pérdida de datos
  • Alta tolerancia a fallos
  • Fácil de construir y controlar
  • Compatibilidad multilenguaje

Storm es una plataforma informática y proporciona Lenguaje de Consulta Continua (CQL) en la capa de servicio para facilitar la implementación del servicio. CQL tiene las siguientes características:

  • Fácil de usar: La sintaxis CQL es similar a la sintaxis SQL. Los usuarios que tienen conocimientos básicos de SQL pueden aprender fácilmente CQL y usarlo para desarrollar servicios.
  • Funciones ricas: Además de las expresiones básicas proporcionadas por SQL, CQL proporciona funciones, como ventanas, filtrado y configuración de simultaneidad, para el procesamiento de flujo.
  • Fácil de escalar: CQL proporciona una API de extensión para soportar escenarios de servicio cada vez más complejos. Los usuarios pueden personalizar la entrada, la salida, la serialización y la deserialización para cumplir con los requisitos de servicio específicos.
  • Fácil de depurar: CQL proporciona una explicación detallada de los códigos de error, facilitando a los usuarios la rectificación de fallas.

Para obtener más información sobre la arquitectura y los principios de Storm, consulte https://storm.apache.org/.

Principio

  • Conceptos básicos
    Tabla 1 Conceptos

    Concepto

    Descripción

    Tuple

    Un tuple es un par de clave-valor invariable utilizado para transferir datos. Tuples se crean y procesan de manera distribuida.

    Stream

    Un stream es una secuencia ilimitada de tuples.

    Topology

    Una topología es una aplicación en tiempo real que se ejecuta en la plataforma Storm. Es un gráfico acíclico dirigido (DAG) compuesto de componentes. Una topología puede ejecutarse simultáneamente en varias máquinas. Cada máquina ejecuta una parte del DAG. Una topología es similar a un MapReduce job. La diferencia es que la topología es un programa residente. Una vez iniciada, la topología no puede detenerse a menos que se termine manualmente.

    Spout

    Un spout es la fuente de tuples. Por ejemplo, un spout puede leer datos de una cola de mensajes, una base de datos, un sistema de archivos o una conexión TCP y los convierte en tuples, que son procesadas por el siguiente componente.

    Bolt

    En una topología, un bolt es un componente que recibe datos y ejecuta lógica específica, como filtrar o convertir tuples, unir o agregar flujos y realizar estadísticas y persistencia de resultados.

    Worker

    Un worker es un procesamiento físico en estado de ejecución en una topología. Cada worker es un proceso de JVM. Cada topología puede ser ejecutada por múltiples workers. Cada worker ejecuta un subconjunto lógico de la topología.

    Task

    Task es una rosca de spout o bolt de un worker.

    Stream groupings

    Stream grouping especifica las políticas de distribución de tuple. Instruye al bolt posterior cómo recibir los tuples. Las políticas admitidas incluyen Shuffle Grouping, Fields Grouping, All Grouping, Global Grouping, Non Grouping, y Directed Grouping.

    Figura 3 muestra una topología (DAG) que consiste en un Spout and Bolt. En la figura, un rectángulo indica un Spout o Bolt, el nodo en cada rectángulo indica tareas, y las líneas entre tareas indican streams.

    Figura 3 Topología
  • Confiabilidad

    Storm ofrece tres niveles de confiabilidad de datos:

    • Como máximo una vez: Los datos procesados pueden perderse, pero no pueden procesarse repetidamente. Este nivel de confiabilidad ofrece el mayor rendimiento.
    • Al menos una vez: Los datos pueden procesarse repetidamente para garantizar una transmisión de datos confiable. Si no se recibe una respuesta dentro del tiempo especificado, el Spout vuelve a enviar los datos a Bolts para su procesamiento. Este nivel de confiabilidad puede afectar ligeramente al rendimiento del sistema.
    • Exactamente una vez: Los datos se transmiten con éxito sin pérdida o procesamiento de redundancia. Este nivel de confiabilidad ofrece el peor rendimiento.

    Seleccione el nivel de confiabilidad en función de los requisitos de servicio. Por ejemplo, para los servicios que requieren una alta confiabilidad de datos, utilice Exactamente una vez para asegurarse de que los datos se procesan solo una vez. Para los servicios insensibles a la pérdida de datos, utilice otros niveles para mejorar el rendimiento del sistema.

  • Tolerancia a fallas

    Storm es un sistema tolerante a fallas que ofrece alta disponibilidad. Tabla 2 describe la tolerancia a fallas de los componentes de Storm.

    Tabla 2 Tolerancia a fallas

    Escenario

    Descripción

    Nimbus failed

    Nimbus es rápido y apátrida. Si el Nimbus activo es defectuoso, el Nimbus en espera se hace cargo de los servicios inmediatamente y proporciona servicios externos.

    Supervisor failed

    Supervisor es un daemon de fondo de Workers. Es fail-fast y apátrida. Si un Supervisor es defectuoso, los Workers que se ejecutan en el nodo no se ven afectados, pero no pueden recibir nuevas tareas. El OMS puede detectar la falla del Supervisor y reiniciar los procesos.

    Worker failed

    Si un trabajador está defectuoso, el supervisor del Worker lo reiniciará de nuevo. Si el reinicio falla varias veces, Nimbus reasigna tareas a otros nodos.

    Node failed

    Si un nodo está defectuoso, todas las tareas procesadas por el nodo expirarán y Nimbus asignará las tareas a otro nodo para su procesamiento.

Características de código abierto

  • Cómputo en tiempo real distribuido

    En un clúster de Storm, cada máquina admite la ejecución de múltiples procesos de trabajo y cada proceso de trabajo puede crear múltiples subprocesos. Cada subproceso puede ejecutar varias tareas. Una tarea indica un procesamiento de datos simultáneo.

  • Alta tolerancia a fallos

    Durante el procesamiento de mensajes, si un nodo o un proceso es defectuoso, la unidad de procesamiento de mensajes puede volver a desplegarse.

  • Mensajes confiables

    Se admiten métodos de procesamiento de datos, incluidos At-Least Once, At-Most Once, y Exactly Once.

  • Mecanismo de seguridad

    Storm proporciona autenticación basada en Kerberos y mecanismos de autorización conectables, admite SSL Storm UI y Log Viewer UI, y admite la integración de seguridad con otros componentes de la plataforma de big data (como ZooKeeper y HDFS).

  • Definición e despliegue de topologías flexibles

    El marco Flux se utiliza para definir e desplegar topologías de servicio. Si se cambia el DAG de servicio, los usuarios solo necesitan modificar YAML lenguaje específico del dominio (DSL), pero no necesitan volver a compilar o empaquetar código de servicio.

  • Integración con componentes externos

    Storm admite la integración con múltiples componentes externos como Kafka, HDFS, HBase, Redis y JDBC/RDBMS, implementando servicios que involucran múltiples fuentes de datos.