Cuál es la "tarea" en el paralelismo de tormentas


Estoy tratando de aprender twitter storm siguiendo el gran artículo "Entendiendo el paralelismo de una topología de Tormenta "

Sin embargo, estoy un poco confundido por el concepto de "tarea". ¿Es una tarea una instancia en ejecución del componente (spout o bolt)? Un ejecutor que tiene varias tareas en realidad está diciendo que el mismo componente se ejecuta varias veces por el ejecutor, ¿estoy en lo correcto ?

Además, en un sentido de paralelismo general, Storm generará un hilo dedicado (ejecutor) para un pico o perno, pero ¿qué contribuye al paralelismo un ejecutor(hilo) que tiene múltiples tareas ? Creo que tener varias tareas en un subproceso, ya que un subproceso se ejecuta secuencialmente, solo hace que el subproceso sea una especie de recurso" almacenado en caché", lo que evita generar un nuevo subproceso para la próxima ejecución de la tarea. Estoy en lo cierto?

Puedo aclarar esa confusión por mí mismo después de tomar más tiempo para investigar, pero ya sabes, ambos amamos stackoverflow; -)

Gracias de antemano.

Author: mvg, 2013-06-23

1 answers

Descargo de responsabilidad: Escribí el artículo que mencionaste en tu pregunta anterior.

Sin embargo, estoy un poco confundido por el concepto de "tarea". ¿Es una tarea una instancia en ejecución del componente (spout o bolt)? Un ejecutor que tiene varias tareas en realidad está diciendo que el mismo componente se ejecuta varias veces por el ejecutor, ¿estoy en lo correcto ?

Sí, y sí.

Además, en un sentido de paralelismo general, Tormenta generará un dedicado hilo (ejecutor) para un pico o perno, pero ¿qué es lo que contribuye al paralelismo por un ejecutor(hilo) que tiene múltiples tareas ?

Ejecutar más de una tarea por ejecutor no aumenta el nivel de paralelismo an un ejecutor siempre tiene un hilo que usa para todas sus tareas, lo que significa que las tareas se ejecutan en serie en un ejecutor.

Como escribí en el artículo, tenga en cuenta que:

  • El número de subprocesos ejecutores se puede cambiar después de que la topología se ha iniciado (ver comando storm rebalance).
  • El número de tareas de una topología es estático.

Y por definición existe el invariante de #executors <= #tasks.

Así que una razón para tener más de 2 tareas por subproceso de ejecutor es darle la flexibilidad para expandir/escalar la topología a través del comando storm rebalance en el futuro sin desconectar la topología. Por ejemplo, imagine que comienza con un grupo de tormentas de 15 máquinas pero ya sabe que la próxima semana otras 10 cajas serán añadir. Aquí puede optar por ejecutar la topología en el nivel de paralelismo previsto de 25 máquinas ya en las 15 cajas iniciales (que es, por supuesto, más lento que 25 cajas). Una vez que las 10 cajas adicionales están integradas, puede storm rebalance la topología para hacer un uso completo de las 25 cajas sin ningún tiempo de inactividad.

Otra razón para ejecutar más de 2 tareas por ejecutor es para pruebas (principalmente funcionales). Por ejemplo, si su máquina de desarrollo o servidor CI solo es lo suficientemente potente como para ejecutar, digamos, 2 ejecutores junto con todas las demás cosas que se ejecutan en la máquina, todavía puede ejecutar 30 tareas (aquí: 15 por ejecutor) para ver si el código, como su agrupación de tormenta personalizada, funciona como se esperaba.

En la práctica normalmente ejecutamos 1 tarea por ejecutor.

PD: Ten en cuenta que Storm generará unos cuantos hilos más entre bastidores. Por ejemplo, cada ejecutor tiene su propio "enviar hilo" que es responsable de manejar las tuplas salientes. También hay " nivel de sistema" hilos de fondo para, por ejemplo, acking tuplas que se ejecutan junto a" sus " hilos. IIRC la interfaz de usuario de Storm cuenta esos hilos de acción además de" sus " hilos.

 65
Author: Michael G. Noll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-11 08:21:01