Las 30 mejores preguntas y respuestas de entrevistas sobre Apache Storm (2026)

Preguntas y respuestas de la entrevista de Apache Storm

👉 Descarga gratuita en PDF: Preguntas y respuestas de la entrevista de Apache Storm

Las mejores preguntas y respuestas de la entrevista de Apache Storm

1) ¿Qué es Apache Storm?

Apache Storm es un distributed real-time stream processing system Diseñado para procesar grandes volúmenes de datos entrantes con baja latencia y alto rendimiento. Destaca en análisis en tiempo real y computación continua, a diferencia de los sistemas por lotes como Hadoop, que operan con datos almacenados. Storm es tolerante a fallos, escalable y se integra bien con sistemas externos como intermediarios de mensajes, bases de datos y herramientas de monitorización.


2) ¿Cuáles son los componentes principales de Apache Storm?

La arquitectura de Storm consta de varios componentes clave que orquestan el procesamiento de datos en tiempo real:

Componente Descripción
Nimbo Nodo maestro que distribuye código, asigna tareas y supervisa el clúster
Supervisor o Supervisión. Nodo de trabajo que ejecuta tareas asignadas por Nimbus
guardián del zoológico Proporciona coordinación distribuida y gestión del estado del clúster.
Proceso de trabajo Ejecuta parte de la topología
Ejecutor y tarea Hilos y unidades de procesamiento de trabajo

Estos componentes garantizan la coordinación distribuida, la asignación de tareas y la tolerancia a fallas en todo el clúster.


3) ¿Qué es una topología en Apache Storm?

A topology Apache Storm es un grafo acíclico dirigido (DAG) que define cómo fluyen los datos a través del sistema. Conecta las fuentes de datos (Spouts) con las unidades de procesamiento (Bolts). Una vez enviadas, las topologías se ejecutan indefinidamente, procesando datos en streaming continuamente hasta que se terminan manualmente. La estructura y las estrategias de agrupación de la topología determinan cómo se mueven y procesan las tuplas (unidades de datos) entre los componentes.


4) Explica los chorros y los pernos en la tormenta.

  • Canalón: Un Spout es el punto de entrada para la transmisión de datos a una topología de Storm. Lee datos de fuentes externas, como archivos, intermediarios de mensajes (p. ej., Kafka), API, etc., y emite tuplas en la transmisión.
  • Tornillo: Un Bolt procesa tuplas entrantes. Los Bolts pueden filtrar, agregar, unir, conservar resultados o emitir nuevas tuplas posteriormente. El procesamiento complejo de datos se basa en combinaciones de Bolts.

5) ¿Qué es una tupla y un flujo en Apache Storm?

A tuple es la estructura de datos principal de Storm que representa una lista ordenada de valores (es decir, un registro). A stream Es una secuencia ilimitada de tuplas que fluyen a través de una topología. Cada tupla en un flujo puede activar el procesamiento posterior en Bolts. Las tuplas y los flujos juntos permiten a Storm transportar y procesar datos continuamente.


6) ¿Cuáles son los diferentes tipos de agrupación de transmisiones en Storm?

Storm admite varios stream grouping Estrategias para enrutar tuplas de un componente al siguiente:

  • Agrupación aleatoria: Distribuye tuplas aleatoriamente para equilibrar la carga de manera uniforme
  • Agrupación de campos: Envía tuplas con los mismos valores de campo a una tarea de bolt específica
  • Agrupación global: Enruta todas las tuplas a una instancia de bolt
  • Todas las agrupaciones: Envía cada tupla a todas las instancias de bolt
  • Agrupación directa: Permite el enrutamiento explícito a una tarea específica

Estas agrupaciones influyen en cómo se dividen y procesan los datos en paralelo.


7) ¿Cómo garantiza Storm la tolerancia a fallos?

Storm proporciona tolerancia a fallas a través de una combinación de:

  • Supervisión de tareas: Nimbus y supervisores reinician a trabajadores fallidos
  • Expresiones de gratitud: Los pernos y los caños reconocen la finalización de la tupla
  • Replay: Las tuplas que no se pueden procesar dentro del tiempo de espera se reproducen
  • Coordinación de ZooKeeper: Garantiza el control distribuido y la consistencia del clúster

Estos mecanismos ayudan a Storm a recuperarse con elegancia de fallas de nodos y al mismo tiempo garantizan la continuidad del procesamiento de datos.


8) ¿Qué son las garantías de procesamiento de mensajes en Storm?

Storm admite tres semánticas de procesamiento:

Garantiza Descripción
Como máximo una vez El mensaje puede perderse pero nunca volver a procesarse
Al menos una vez El mensaje se vuelve a intentar hasta que se procese (predeterminado)
Exactamente una vez Cada mensaje se procesa una vez a pesar de los fallos.

Exactamente una vez se logra con mecanismos transaccionales y de reconocimiento, generalmente utilizando la API de Trident para flujos de trabajo con estado.


9) ¿Cuál es el propósito de la API de Trident?

Trident es una API de alto nivel creada sobre Storm que proporciona:

  • Semántica de exactamente una vez
  • Procesamiento transaccional
  • Administración del Estado
  • Modelo de programación simplificado

Abstrae los elementos internos de Storm de nivel inferior, lo que hace que los flujos de trabajo complejos sean más fáciles de escribir y mantener.


10) Explique la contrapresión en Apache Storm.

La contrapresión regula la velocidad de emisión de tuplas en la topología para evitar desbordamientos de búfer y el agotamiento de recursos cuando los pernos posteriores no pueden mantener el ritmo. Storm ajusta dinámicamente las tasas de emisión para mantener un rendimiento fluido sin pérdida de datos ni degradación del rendimiento.


11) ¿Cómo se compara Storm con Apache? Spark ¿Transmisión?

Storm procesa datos en real time (procesamiento continuo de eventos) con baja latencia, mientras que Spark El streaming funciona en micro-batches (procesando pequeñas ventanas de datos a intervalos). Storm es adecuado para necesidades de procesamiento de fracciones de segundo, mientras que Spark El streaming se destaca en el análisis de microlotes de alto rendimiento.


12) Enumere los casos de uso comunes de Apache Storm.

Storm se utiliza ampliamente en:

  • Análisis y paneles de control en tiempo real
  • Sistemas de detección de fraude
  • Procesamiento de registros y eventos
  • Procesamiento de datos de sensores de IoT
  • Analítica de redes sociales

Se adapta a escenarios que requieren información inmediata sobre las entradas de streaming.


13) ¿Qué es un tiempo de espera de mensaje de topología?

Topology_Message_Timeout_secs Define el tiempo máximo permitido para que la topología procese completamente una tupla antes de que se considere fallida y se reproduzca. Esto ayuda a mantener la confiabilidad en flujos de procesamiento largos o bloqueados.


14) ¿Cómo es Apache Storm? Cluster ¿Monitoreado?

Storm proporciona una Storm UI para la visualización de clústeres en tiempo real (topologías, trabajadores, rendimiento) y se integra con herramientas de monitoreo como JMX, Prometheus y Grafana para seguimiento de métricas y alertas.


15) ¿Qué papel juega ZooKeeper en Storm?

ZooKeeper gestiona la coordinación y la configuración dentro de un clúster de Storm, manteniendo los bloqueos distribuidos, la elección de líder (para Nimbus) y la consistencia del estado del clúster. Esto garantiza una gestión robusta de los componentes distribuidos.


16) ¿Cómo logra Apache Storm la escalabilidad?

Apache Storm escala horizontalmente distribuyendo la computación entre múltiples nodos de trabajo y tareas. Cada topología se puede configurar con una parallelism hint, que determina el número de ejecutores (hilos) y tareas por componente. La arquitectura de Storm admite ambos ampliar (añadiendo hilos) y escalando (añadiendo nodos).

Por ejemplo, si un perno tiene un paralelismo de 8, Storm distribuye sus tareas entre 8 ejecutores, posiblemente a través de diferentes supervisores. El escalado se gestiona dinámicamente mediante comandos de reequilibrio sin detener la topología.


17) ¿Cuáles son las ventajas y desventajas de utilizar Apache Storm?

Ventajas Desventajas
Procesamiento de transmisiones en tiempo real Complejo de configurar y mantener
Alto rendimiento y baja latencia Requiere ZooKeeper para la coordinación
Tolerante a fallos y escalable La depuración de problemas distribuidos puede ser un desafío
Admite varios idiomas (Java, Python, Etc.) Less Eficiente para cargas de trabajo por lotes o microlotes
Fácil integración con Kafka, Hadoop, HBase Trident agrega sobrecarga para el procesamiento exactamente una vez

Resumen de la respuesta: Storm es ideal para análisis en tiempo real, pero no está optimizado para cargas de trabajo por lotes u operaciones con mucho estado en comparación con marcos como Flink o Spark Transmisión estructurada.


18) Explique el ciclo de vida de una tupla en Apache Storm.

El ciclo de vida de una tupla comienza en el Spout y finaliza cuando está completamente procesado y reconocido.

  1. Creación de tuplas: Un pico lee y emite una tupla.
  2. Enrutamiento de flujo: La tupla viaja a través de tornillos según la lógica de agrupación.
  3. Procesamiento: Cada perno ejecuta su lógica y puede emitir nuevas tuplas.
  4. Reconocimiento: Una vez que todos los pernos de aguas abajo terminan, la tupla se reconoce nuevamente en el surtidor.
  5. Manejo de fallos: Si falla algún rayo, Storm reproduce la tupla automáticamente.

Este ciclo de vida garantiza la confiabilidad a través de su función integrada. ack/fail mechanism.


19) ¿Cuál es la diferencia entre caños confiables y no confiables?

Aspecto Pico confiable Caño poco fiable
Seguimiento de tuplas Realiza un seguimiento de las tuplas a través de los identificadores de mensajes No rastrea tuplas
Reintentos Reproduce tuplas fallidas Sin mecanismo de reintento
Acknowledgment: Recibe mensajes de acuse de recibo/fallo Sin reconocimiento
Caso de uso Transacciones financieras, detección de fraudes Agregación y monitoreo de registros

Ejemplo: KafkaSpout suele ser confiable, mientras que un simple flujo de syslog puede no ser confiable para una ingestión más rápida.


20) ¿Cómo se maneja la consistencia de los datos en Apache Storm?

La consistencia de los datos en Storm se puede mantener mediante:

  • Uso de la API de Trident para la semántica de procesamiento exactamente una vez.
  • Operaciones idempotentes para garantizar que las tuplas reprocesadas no causen efectos duplicados.
  • Caños/pernos transaccionales para computación con estado.
  • Estado del punto de control en sistemas externos como Redis o Cassandra.

Por ejemplo, al actualizar los contadores, los pernos deben utilizar operaciones atómicas para garantizar la corrección durante las repeticiones de tuplas.


21) ¿Cómo se depuran o supervisan los problemas de rendimiento en una topología Storm?

La depuración implica múltiples estrategias:

  • Interfaz de usuario de Storm: Visualiza métricas de topología (latencia, recuentos de tuplas, errores).
  • Registros de trabajadores: Consulte los registros en /logs/workers-artifacts/ por excepciones.
  • Habilitar el modo de depuración: topology.debug=true imprime registros de flujo de tuplas.
  • Rendimiento del perfil: Utilice métricas como execute-latency y process-latency.
  • Monitoreo externo: Integre paneles de control de Prometheus o Grafana.

La monitorización proactiva de métricas y la elaboración de perfiles de los trabajadores ayudan a identificar cuellos de botella de forma temprana.


22) ¿Cuáles son las diferencias clave entre Apache Storm y Apache Flink?

Parámetro Tormenta de Apache Apache Flink
Tipo de procesamiento Puro tiempo real (evento a la vez) Tiempo real y por lotes (unificado)
Administración del Estado Externo (vía Trident) Integrado, tolerante a fallos
Estado latente Subsegundo Subsegundo
Facilidad de Uso Mas complejo Más fácil con la API DataStream
Garantía de una sola vez Opcional (vía Trident) Soporte nativo
Contrapresión Manual o dinámico Automático

Resumen de la respuesta: Si bien Storm fue pionero en el procesamiento en tiempo real, Flink ofrece un modelo de gestión de estado más integrado, lo que lo hace preferido para canalizaciones complejas basadas en eventos.


23) ¿En qué se diferencia la topología de Storm de un trabajo de MapReduce?

Un trabajo de MapReduce procesa datos de forma discreta. lotes, mientras que una topología Storm procesa flujos de datos continuamente.

  • Mapa reducido: Entrada finita, se ejecuta una vez, adecuada para análisis sin conexión.
  • Tormenta: Entrada infinita, se ejecuta indefinidamente, ideal para análisis en tiempo real.

En esencia, Storm actúa como el “complemento de transmisión” del marco de procesamiento por lotes de Hadoop.


24) Explique el concepto de anclaje en Apache Storm.

El anclaje vincula una tupla emitida a su tupla de origen. Esto permite a Storm rastrear el linaje de las tuplas para la recuperación de fallos. Cuando un perno emite una nueva tupla, puede anclarla a una tupla de entrada mediante:

collector.emit(inputTuple, newTuple);

Si alguna tupla anclada falla más adelante, Storm puede reproducir la tupla fuente original, lo que garantiza un procesamiento confiable.


25) ¿Qué factores debes tener en cuenta al ajustar el rendimiento de Apache Storm?

El ajuste del rendimiento implica optimizar tanto configuration y topology design:

  • Aumentar paralelismo (ejecutores, obreros).
  • Ajustar tiempo de espera del mensaje (topology.message.timeout.secs).
  • Optimizar serialización utilizando Kryo o serializadores personalizados.
  • Minimizar barajado de red con estrategias de agrupación apropiadas.
  • Active contrapresión para evitar la sobrecarga.
  • Monitorización Uso de GC y montón para evitar cuellos de botella de memoria.

Un equilibrio entre paralelismo y capacidad de hardware garantiza un rendimiento óptimo y una latencia mínima.


26) ¿Qué es la API Trident y cómo amplía las capacidades de Apache Storm?

La API de Trident es un high-level abstraction layer Desarrollado sobre Apache Storm, diseñado para simplificar el procesamiento de flujos con estado. A diferencia del núcleo de Storm, que funciona con tuplas individuales, Trident opera con microlotes de tuplas, Proporcionando semántica de procesamiento exactamente una vez.

Introduce abstracciones como , Lotes y Estado OperaSupuestos de Alcance para facilitar la agregación, el filtrado y las uniones.

Ejemplo: Trident simplifica la escritura de código para contar los clics del usuario o agregar métricas por minuto sin tener que administrar manualmente los reconocimientos de tuplas o la lógica de reproducción.

En resumen, Trident cierra la brecha entre la flexibilidad de bajo nivel de Storm y marcos como Spark La simplicidad del streaming.


27) ¿Cómo se integra Apache Storm con Apache Kafka?

La integración entre Kafka y Storm se logra mediante el KafkaSpout (consumidor) y opcionalmente un KafkaBolt (productor).

Flujo de datos típico:

  1. KafkaSpout se suscribe a un tema de Kafka y emite tuplas en la topología de Storm.
  2. Los pernos procesan y transforman datos.
  3. KafkaBolt escribe los resultados en otro tema de Kafka o sistema externo.

Fragmento de configuración de ejemplo:

KafkaSpoutConfig<String, String> spoutConfig = KafkaSpoutConfig.builder("localhost:9092", "input-topic").build();
builder.setSpout("kafka-spout", new KafkaSpout<>(spoutConfig));

La integración de Kafka-Spout garantiza Transmisión de mensajes escalable y tolerante a fallos entre sistemas como Spark, Flink, o la propia Storm.


28) ¿Cuáles son las estrategias de gestión de estado en Apache Storm?

Storm admite múltiples estrategias para administrar el estado entre pernos y boquillas:

Tipo de estado Descripción Ejemplo de caso de uso
Estado en memoria Rápido pero volátil Agregaciones temporales
Estado persistente Almacenados en bases de datos externas (por ejemplo, Redis, Cassandra) Registros de transacciones, contadores
Estado transaccional Garantiza la consistencia exactamente una vez Transacciones financieras
Estado particionado Distribuye el estado entre las tareas Tuberías de alta escalabilidad

La API de Trident simplifica esto mediante State y StateUpdater interfaces, haciendo que las operaciones estatales sean más confiables y modulares.


29) Explique la diferencia entre Storm's Local y Cluster Modos.

  • Modo local: Se utiliza para pruebas o desarrollo. Ejecuta todos los componentes de Storm (Nimbus, Supervisor, Zookeeper) en un único proceso JVM.
  • Cluster Modo: Se utiliza para producción. Los procesos Nimbus y Supervisor se ejecutan en nodos separados, y ZooKeeper gestiona la coordinación.
Aspecto Modo local Cluster Moda
Configuración Sola máquina Nodos múltiples
Proposito Depuración, pruebas unitarias Despliegue de producción
Speed (Rapidez) Más lento para cargas de trabajo pesadas Optimizado para el rendimiento
Tolerancia a fallos Minimo Alta

Puede enviar topologías al clúster mediante:

storm jar mytopology.jar com.example.MyTopology

30) ¿Cuáles son los diferentes tipos de fuentes de datos (Spouts) en Storm?

Los caños se pueden clasificar como:

  1. Caños confiables: Utilice los identificadores de mensajes para realizar un seguimiento de los reconocimientos de tuplas.
  2. Caños poco fiables: Emitir tuplas sin seguimiento (más rápido pero menos confiable).
  3. Canalones transaccionales: Emitir datos en lotes transaccionales (usado con Trident).

Ejemplos:

  • KafkaSpout (confiable)
  • RabbitMQSpout (confiable)
  • RandomSpout o FileSpout (no confiable)

Cada tipo de boquilla se adapta a diferentes equilibrios entre rendimiento y fiabilidad.


🔍 Preguntas clave de entrevistas sobre Apache Storm con escenarios reales y respuestas estratégicas

1) ¿Qué es Apache Storm y dónde se utiliza normalmente?

Se espera del candidato: El entrevistador quiere evaluar su comprensión básica de Apache Storm y sus aplicaciones en el mundo real, especialmente en entornos de procesamiento de datos en tiempo real.

Respuesta de ejemplo: Apache Storm es un framework distribuido y tolerante a fallos, diseñado para el procesamiento de flujos en tiempo real. Se utiliza comúnmente en escenarios como análisis en tiempo real, procesamiento de registros, sistemas basados ​​en eventos y computación continua, donde se requiere baja latencia y alto rendimiento.


2) ¿Puede explicar los componentes principales de una topología de Apache Storm?

Se espera del candidato: El entrevistador está probando su conocimiento de la arquitectura de Storm y si comprende cómo fluyen los datos a través del sistema.

Respuesta de ejemplo: Una topología de tormenta consta de spouts y bolts conectados en un grafo acíclico dirigido. Los spouts actúan como fuentes de flujos de datos, mientras que los bolts procesan, transforman o agregan los datos. La topología define cómo fluyen los datos y se ejecuta continuamente hasta que se detiene.


3) ¿Cómo garantiza Apache Storm la tolerancia a fallos?

Se espera del candidato: El entrevistador quiere comprender su comprensión de los mecanismos de confiabilidad en sistemas distribuidos.

Respuesta de ejemplo: Apache Storm garantiza la tolerancia a fallos mediante mecanismos de anclaje y reconocimiento de tuplas. Si una tupla no se procesa completamente dentro de un tiempo de espera especificado, se reproduce. Los supervisores y Nimbus también monitorean los fallos de los trabajadores y reinician las tareas automáticamente cuando es necesario.


4) Describe una situación en la que optimizaste el rendimiento de una topología de Storm.

Se espera del candidato: El entrevistador busca experiencia práctica y su capacidad para mejorar la eficiencia del sistema.

Respuesta de ejemplo: En mi puesto anterior, optimicé una topología de Storm ajustando las sugerencias de paralelismo y el número de trabajadores en función de las métricas de rendimiento. También reduje la serialización innecesaria de datos entre los pernos, lo que redujo significativamente la latencia de procesamiento.


5) ¿Cómo se maneja la contrapresión en Apache Storm?

Se espera del candidato: El entrevistador quiere saber si usted comprende el control de flujo en sistemas de transmisión.

Respuesta de ejemplo: En un puesto anterior, gestionaba la contrapresión activando los mecanismos de contrapresión integrados de Storm y configurando cuidadosamente los tamaños de los búferes. También supervisaba los pernos de bajo consumo y los escalaba horizontalmente para evitar la congestión aguas arriba.


6) ¿Qué desafíos has enfrentado al depurar aplicaciones Storm?

Se espera del candidato: El entrevistador está evaluando sus habilidades para resolver problemas y su persistencia en entornos distribuidos complejos.

Respuesta de ejemplo: Depurar aplicaciones Storm puede ser un desafío debido a la ejecución distribuida. En mi trabajo anterior, dependía en gran medida de la interfaz de usuario de Storm, el registro detallado y la recopilación de métricas para rastrear errores de tuplas e identificar cuellos de botella entre trabajadores y ejecutores.


7) ¿Cómo se compara Apache Storm con otros marcos de procesamiento de flujo?

Se espera del candidato: El entrevistador quiere ver su conocimiento más amplio de la industria y su capacidad para evaluar compensaciones.

Respuesta de ejemplo: Apache Storm destaca en el procesamiento evento a evento de baja latencia, mientras que otros frameworks se centran más en el microbatching o el procesamiento unificado de lotes y flujos. Storm se suele elegir cuando se requiere un procesamiento estricto en tiempo real y modelos de procesamiento simples.


8) Describe cómo diseñarías una topología Storm para la detección de fraude en tiempo real.

Se espera del candidato: El entrevistador está probando su capacidad para aplicar los conceptos de Storm a situaciones del mundo real.

Respuesta de ejemplo: Diseñaría spouts para ingerir eventos de transacciones en tiempo real y bolts para realizar validación, enriquecimiento y análisis basado en reglas. Los bolts con estado rastrearían patrones sospechosos y se emitirían alertas inmediatas al superarse los umbrales.


9) ¿Cómo se gestiona la configuración y la implementación en Apache Storm?

Se espera del candidato: El entrevistador quiere conocer su experiencia operativa y de implementación.

Respuesta de ejemplo: En mi anterior puesto, gestionaba configuraciones mediante archivos YAML externalizados y parámetros específicos del entorno. Las implementaciones se automatizaban mediante scripts y se versionaban las topologías para garantizar lanzamientos consistentes y repetibles en todos los entornos.


10) ¿Cómo prioriza la confiabilidad frente al rendimiento en un sistema basado en Storm?

Se espera del candidato: El entrevistador está evaluando sus habilidades de toma de decisiones al momento de equilibrar los requisitos del sistema en competencia.

Respuesta de ejemplo: Priorizo ​​la confiabilidad de los sistemas críticos, habilitando los reconocimientos y reintentos, incluso si esto aumenta la latencia. Una vez garantizada la confiabilidad, optimizo el rendimiento gradualmente mediante el ajuste del paralelismo y la asignación de recursos según las métricas observadas.

Resumir este post con: