Apache Storm: conceptos básicos
Apache Storm lee el flujo sin procesar de datos en tiempo real desde un extremo, lo pasa a través de una secuencia de pequeñas unidades de procesamiento y genera la información procesada / útil en el otro extremo.
El siguiente diagrama muestra el concepto central de Apache Storm.
Veamos ahora más de cerca los componentes de Apache Storm:
Componentes | Descripción |
---|---|
Tupla | Tuple es la estructura de datos principal en Storm. Es una lista de elementos ordenados. De forma predeterminada, una tupla admite todos los tipos de datos. Generalmente, se modela como un conjunto de valores separados por comas y se pasa a un clúster de Storm. |
Corriente | Stream es una secuencia desordenada de tuplas. |
Caños | Fuente de arroyo. Generalmente, Storm acepta datos de entrada de fuentes de datos sin procesar como Twitter Streaming API, cola de Apache Kafka, cola de Kestrel, etc. De lo contrario, puede escribir spouts para leer datos de fuentes de datos. "ISpout" es la interfaz principal para implementar spouts. Algunas de las interfaces específicas son IRichSpout, BaseRichSpout, KafkaSpout, etc. |
Pernos | Los pernos son unidades lógicas de procesamiento. Los surtidores pasan datos al proceso de pernos y pernos y producen un nuevo flujo de salida. Bolts puede realizar las operaciones de filtrado, agregación, unión e interacción con fuentes de datos y bases de datos. Bolt recibe datos y emite a uno o más tornillos. “IBolt” es la interfaz principal para implementar pernos. Algunas de las interfaces comunes son IRichBolt, IBasicBolt, etc. |
Tomemos un ejemplo en tiempo real de “Análisis de Twitter” y veamos cómo se puede modelar en Apache Storm. El siguiente diagrama muestra la estructura.
La entrada para el "Análisis de Twitter" proviene de Twitter Streaming API. Spout leerá los tweets de los usuarios que utilizan la API de transmisión de Twitter y los generará como un flujo de tuplas. Una sola tupla del pico tendrá un nombre de usuario de Twitter y un solo tweet como valores separados por comas. Luego, este grupo de tuplas se enviará a Bolt y Bolt dividirá el tweet en palabras individuales, calculará el recuento de palabras y mantendrá la información en una fuente de datos configurada. Ahora, podemos obtener fácilmente el resultado consultando la fuente de datos.
Topología
Los picos y los pernos están conectados entre sí y forman una topología. La lógica de la aplicación en tiempo real se especifica dentro de la topología de Storm. En palabras simples, una topología es un gráfico dirigido donde los vértices son cálculos y los bordes son un flujo de datos.
Una topología simple comienza con picos. Spout emite los datos a uno o más tornillos. El perno representa un nodo en la topología que tiene la lógica de procesamiento más pequeña y la salida de un perno se puede emitir a otro perno como entrada.
Storm mantiene la topología siempre en ejecución, hasta que mata la topología. El trabajo principal de Apache Storm es ejecutar la topología y ejecutará cualquier número de topología en un momento dado.
Tareas
Ahora tiene una idea básica sobre picos y pernos. Son la unidad lógica más pequeña de la topología y una topología se construye utilizando un solo pico y una serie de pernos. Deben ejecutarse correctamente en un orden particular para que la topología se ejecute correctamente. La ejecución de todos y cada uno de los picos y cerrojos de Storm se denomina "Tareas". En palabras simples, una tarea es la ejecución de un pico o un cerrojo. En un momento dado, cada pico y perno puede tener varias instancias ejecutándose en varios subprocesos separados.
Trabajadores
Una topología se ejecuta de manera distribuida, en varios nodos trabajadores. Storm distribuye las tareas de manera uniforme en todos los nodos de trabajadores. La función del nodo trabajador es escuchar trabajos e iniciar o detener los procesos cada vez que llega un nuevo trabajo.
Agrupación de transmisiones
El flujo de datos fluye de los picos a los pernos o de un perno a otro. La agrupación de flujos controla cómo se enrutan las tuplas en la topología y nos ayuda a comprender el flujo de tuplas en la topología. Hay cuatro agrupaciones integradas como se explica a continuación.
Agrupación aleatoria
En la agrupación aleatoria, se distribuye aleatoriamente un número igual de tuplas entre todos los trabajadores que ejecutan los pernos. El siguiente diagrama muestra la estructura.
Agrupación de campos
Los campos con los mismos valores en tuplas se agrupan y las tuplas restantes se mantienen fuera. Luego, las tuplas con los mismos valores de campo se envían al mismo trabajador que ejecuta los pernos. Por ejemplo, si la secuencia está agrupada por el campo "palabra", entonces las tuplas con la misma cadena, "Hola" se moverán al mismo trabajador. El siguiente diagrama muestra cómo funciona la agrupación de campos.
Agrupación global
Todas las corrientes se pueden agrupar y enviar a un solo perno. Esta agrupación envía tuplas generadas por todas las instancias del origen a una única instancia de destino (específicamente, elija el trabajador con el ID más bajo).
Todo agrupamiento
All Grouping envía una única copia de cada tupla a todas las instancias del perno receptor. Este tipo de agrupación se utiliza para enviar señales a los tornillos. Toda la agrupación es útil para las operaciones de combinación.