SlideShare una empresa de Scribd logo
1 de 24
Instalación de Storm
Apache Storm
● Storm tiene dos modos de operación local mode y remote mode (cluster).
● El entorno de desarrollo de storm tiene todo lo necesario para desarrollar y
probar topologías storm en modo local.
● Un storm cluster es gestionado por un nodo maestro llamado Nimbus.
● La máquina de desarrollo se comunica con Nimbus y le envía el código
empaquetado en jar y las topologías para ejecutar en el cluster. Nimbus se
encarga de distribuir el código en el cluster y asignar los workers para ejecutar
la topología.
● Para comunicar el entorno de desarrollo con el cluster se utiliza el comando
storm.
Apache Storm en modo local
1. Descargar una release
1. Descomprimir
1. Añadir el directorio bin/ al PATH
1. Confirmar que bin/storm es ejecutable
1. Crear el fichero de configuración local de Storm
~/.storm/storm.yaml
1. Establecer la IP del servidor nimbus.
nimbus.host: localhost
Apache Storm en modo local
7. Iniciar el Zookeeper
zkServer.sh start
8. Iniciar el Nimbus
storm nimbus
9. Iniciar el Supervisor
storm supervisor
Ejecución de topologías
● Storm tiene dos modos de ejecución: local mode y distributed mode.
○ En local mode ejecuta todos los procesos simulando los nodos workers
con threads. El local mode es muy útil para probar y desarrollar
topologías.
○ En distributed mode, Storm se ejecuta en un cluster de máquinas.
Cuando se envía la topología al nodo maestro se adjunta todo el código
necesario para su ejecución. El nodo maestro se ocupa de distribuir el
código y reservar los workers para ejecutar la topología. Si algún worker
se cae el maestro los re-asigna.
Configuración de topologías
Config conf = new Config();
conf.setDebug(true);
conf.setNumWorkers(2);
TOPOLOGY_WORKERS: Indica cuantos procesos se quieren reservar en el
cluster para ejecutar la topología. Cada componte en la topología ejecutará
una serie de hilos. El número de hilos de un componente determinado se
establece en los métodos setBolt y setSpout.
Por ejemplo podemos tener 300 hilos a lo largo de todos los componentes y
50 procesos worker. Por tanto, cada proceso worker ejecutará 6 hilos, cada
uno de los cuales puede pertenecer a un componente distinto.
TOPOLOGY_DEBUG: Cuando se encuentra a true genera un log por cada
mensaje emitido por un componente.
Stream groupings
● Un stream groping indica a la topología como se deben enviar las tuplas
entre dos componentes. Define como el stream se debe particionar entre los
bolts.
1.ShuffleGrouping: envía la tupla a una tarea aleatoria. Tiene el efecto de
distribuir de forma proporcional el procesado de las tuplas. Útil para
operaciones atómicas como operaciones matemáticas.
2.FieldsGrouping: agrupa un stream por un subconjunto de campos. Esto
implica que valores similares vayan a las mismas tareas. FieldsGrouping
está implementado utilizando mod hashing
3. All grouping: El stream se copia en todas las tareas bolt. Hay que
utilizarlo con precaución. Es útil para enviar señales a todos los bolts.
Stream groupings
4. Global grouping: El stream entero va a un solo bolt, en concreto a la tarea
bolt con el ID más bajo.
5. None grouping: Indica que no es relevante el orden, es equivalente a
shuffle grouping.
6. Direct grouping: Un agrupamiento especial. El productor de la tupla
decide que tarea va a consumir la tupla. Direct grouping solo se puede
utilizar en streams declarados como direct streams. Las tuplas emitidas a un
direct stream se deben generar con los métodos emitDirect. Un bolt puede
obtener los ids de los consumidores por medio de TopologyContext.
7. Local grouping: Si el bolt tiene 1 o más tareas en el mismo proceso
worker, las tuplas se mandan a estas tareas intra-proceso.
Linea de comandos: storm
Los parámetros del comando storm son:
1.jar
2.kill
3.activate
4.deactivate
5.rebalance
6.repl
7.classpath
8.localconfvalue
9.remoteconfvalue
10.nimbus
11.supervisor
12.ui
13.drpc
storm jar
● Ejecuta el método main de la clase class con los argumentos especificados.
Se configuran en el classpath los jars de ~/.storm y la configuración.
● El proceso StormSubmitter sube el jar indicado a la hora de enviar la
topología.
storm jar topology-jar-classpath class ...
storm kill
● Termina la topología con el nombre topology-name. Storm primero finaliza
los spouts de la topología y los mensajes que están pendientes de procesar
se procesan.
● A continuación para los workers y limpia su estado. Se puede configurar el
tiempo de desactivación y espera con el flag -w.
storm kill topology-name [-w wait-time-secs]
storm activate/deactivate
● Activa los spouts de la topología especificada.
storm activate topology-name
● Desactiva los spouts de la topología especificada.
storm deactivate topology-name
storm rebalance
● Permite hacer un re-balanceo de la topología cuando se añaden nuevos
nodos al cluster.
● Rebalance primero desactiva la topología en ejecución y después
redistribuye los workers en la nueva configuración del cluster. La topología
se inicia desde su estado previo.
storm rebalance topology-name [-w wait-secs]
storm
● Lanza el demonio supervisor.
storm supervisor
● Lanza el demonio UI. El UI proporciona un interfaz web para storm y
muestra información sobre las topologías en ejecución.
storm ui
● Lanza el demonio Distributed RPC.
storm drpc
Arrancando y parando topologías
en un cluster remoto
● Cuando se desea enviar una topología a un cluster remoto hay que cambiar la
llamada LocalCluster a StormSubmitter e implementar el método submitTopology
que es responsable de enviar la topología al cluster.
● Es necesario establecer la dirección IP del host maestro en ~/.storm/storm.yaml
nimbus.host: "123.45.678.890"
Paralelismo de Topologías
● Storm distingue entre las siguientes 3 entidades:
1. Procesos Worker
2. Executors (threads)
3. Tasks
Paralelismo de Topologías
● Un proceso worker ejecuta un subconjunto de la topología. Un proceso
worker pertenece a una topología determinada y puede ejecutar 1 o más
executors para 1 o más componentes (Spouts o Bolts) de la topología. Una
topología en ejecución consiste en muchos procesos ejecutándose en
muchas máquinas de un cluster Storm.
● Un executor es un hilo que es creado por un proceso worker. Puede
ejecutar 1 o más tareas para el mismo componente (spout o bolt).
Paralelismo de Topologías
● Una task lleva a cabo el procesado de datos. Cada Spout o Bolt
implementado en el código ejecuta todas las tareas necesarias en el cluster.
● El número de tareas de un componente es siempre el mismo a lo largo del
ciclo de vida de la topología, pero el número de executors (threads) para un
componente puede cambiar a lo largo del tiempo.
● La siguiente condición siempre se cumple:
#threads <= #tasks.
● Por defecto el número de tasks es el mismo que el número de executors. Es
decir Storm ejecuta una tarea por hilo.
Paralelismo de Topologías
● Storm tiene el siguiente orden de preferencia en configuración:
defaults.yaml
< storm.yaml
< topology-specific configuration
< internal component-specific configuration
< external component-specific configuration
● Número de procesos worker
Cuantos procesos se crean para la topología a lo largo de las máquinas
del cluster.
Opción de configuración: TOPOLOGY_WORKERS
En código: Config#setNumWorkers
Paralelismo de Topologías
● Número de executors (threads)
○ Cuantos executors se pueden crear por componente.
■ En código: TopologyBuilder#setSpout()
TopologyBuilder#SetBolt()
A partir de storm v0.8 se puede especificar con parallelism_hint el
número de executors para un bolt concreto.
● Número de tareas (tasks)
○ Indica cuantas tareas se pueden crear por componente.
Configuración: TOPOLOGY_TASKS
Código: ComponentConfigurationDeclarer#setNumTasks()
topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
.setNumTasks(4)
.shuffleGrouping("blue-spout);
Paralelismo de Topologías
Cambiando el paralelismo en ejecución
En Storm es posible modificar el paralelismo de una topología en
ejecución.Lo cual se conoce como rebalancing,
Hay dos opciones para el rebalance:
1. Utilizar el web UI de storm.
2. Utilizar la línea de comandos.
storm rebalance mytopology -n 5 -e blue-spout=3 -e
yellow-bolt=10
Paralelizando spouts
● Se puede paralelizar la entrada a los spouts utilizando la clase
TopologyContext y dividiendo el stream de entrada entre las instancias
disponibles.
public void open(Map conf, TopologyContext context,
SpoutOutputCollector collector) {
//Obtenemos el num de spouts del contexto
int spoutsSize =
context.getComponentTasks(context.getThisComponentId(
)).size();
//Obtenemos el ID de este spout
int myIdx = context.getThisTaskIndex();
String[] tracks = ((String)
conf.get("track")).split(",");
StringBuffer tracksBuffer = new StringBuffer();
for(int i=0; i< tracks.length;i++){
//Comprobamos si este spout debe procesar el stream
If( i % spoutsSize == myIdx){
tracksBuffer.append(",");
tracksBuffer.append(tracks[i]);
}
Stratebi: Quiénes somos
www.TodoBI.com
info@stratebi.co
m
www.stratebi.com
Mas información
Tfno:
91.788.34.10
Madrid: Pº de la Castellana, 164, 1º
Barcelona: C/ Valencia, 63
Brasil: Av. Paulista, 37 4 andar

Más contenido relacionado

La actualidad más candente

Group Communication (Distributed computing)
Group Communication (Distributed computing)Group Communication (Distributed computing)
Group Communication (Distributed computing)
Sri Prasanna
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
Mr SMAK
 

La actualidad más candente (20)

Black hat usa_2015-bypass_surgery-6_aug2015
Black hat usa_2015-bypass_surgery-6_aug2015Black hat usa_2015-bypass_surgery-6_aug2015
Black hat usa_2015-bypass_surgery-6_aug2015
 
Dichotomy of parallel computing platforms
Dichotomy of parallel computing platformsDichotomy of parallel computing platforms
Dichotomy of parallel computing platforms
 
Introduction to git submodules
Introduction to git submodulesIntroduction to git submodules
Introduction to git submodules
 
Multi threaded programming
Multi threaded programmingMulti threaded programming
Multi threaded programming
 
Group Communication (Distributed computing)
Group Communication (Distributed computing)Group Communication (Distributed computing)
Group Communication (Distributed computing)
 
6.distributed shared memory
6.distributed shared memory6.distributed shared memory
6.distributed shared memory
 
Distributed systems scheduling
Distributed systems schedulingDistributed systems scheduling
Distributed systems scheduling
 
Distributed Transaction
Distributed TransactionDistributed Transaction
Distributed Transaction
 
Distributed Objects and Remote Invocation
Distributed Objects and Remote InvocationDistributed Objects and Remote Invocation
Distributed Objects and Remote Invocation
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Corba concepts & corba architecture
Corba concepts & corba architectureCorba concepts & corba architecture
Corba concepts & corba architecture
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Disassembler and simulators
Disassembler and simulatorsDisassembler and simulators
Disassembler and simulators
 
Concurrency: Mutual Exclusion and Synchronization
Concurrency: Mutual Exclusion and SynchronizationConcurrency: Mutual Exclusion and Synchronization
Concurrency: Mutual Exclusion and Synchronization
 
Mono Repo
Mono RepoMono Repo
Mono Repo
 
Introduction to git administration
Introduction to git administrationIntroduction to git administration
Introduction to git administration
 
CS6601 DISTRIBUTED SYSTEMS
CS6601 DISTRIBUTED SYSTEMSCS6601 DISTRIBUTED SYSTEMS
CS6601 DISTRIBUTED SYSTEMS
 
Pengenalan Git
Pengenalan GitPengenalan Git
Pengenalan Git
 
Software Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented ProgrammingSoftware Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented Programming
 
Distributed system unit II according to syllabus of RGPV, Bhopal
Distributed system unit II according to syllabus of  RGPV, BhopalDistributed system unit II according to syllabus of  RGPV, Bhopal
Distributed system unit II according to syllabus of RGPV, Bhopal
 

Similar a Apache Storm: Instalación

Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
Conferencias FIST
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
bowelmx
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2
Luis Cigarroa
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
AcristyM
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
AcristyM
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
DanielCorzo12
 

Similar a Apache Storm: Instalación (20)

Apache Storm: Introduccion
Apache Storm: IntroduccionApache Storm: Introduccion
Apache Storm: Introduccion
 
Ud3 inocente alcaide
Ud3 inocente alcaideUd3 inocente alcaide
Ud3 inocente alcaide
 
Storm
StormStorm
Storm
 
Thread
ThreadThread
Thread
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Openmp
OpenmpOpenmp
Openmp
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2
 
De Threads a CompletableFutures
De Threads a CompletableFuturesDe Threads a CompletableFutures
De Threads a CompletableFutures
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
PROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELAPROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELA
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
Lab5 guia
Lab5 guiaLab5 guia
Lab5 guia
 
06 airc firewalls
06 airc   firewalls06 airc   firewalls
06 airc firewalls
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
 
Multitarea
MultitareaMultitarea
Multitarea
 

Más de Stratebi

Más de Stratebi (20)

Destinos turisticos inteligentes
Destinos turisticos inteligentesDestinos turisticos inteligentes
Destinos turisticos inteligentes
 
Azure Synapse
Azure SynapseAzure Synapse
Azure Synapse
 
Options for Dashboards with Python
Options for Dashboards with PythonOptions for Dashboards with Python
Options for Dashboards with Python
 
Dashboards with Python
Dashboards with PythonDashboards with Python
Dashboards with Python
 
PowerBI Tips y buenas practicas
PowerBI Tips y buenas practicasPowerBI Tips y buenas practicas
PowerBI Tips y buenas practicas
 
Machine Learning Meetup Spain
Machine Learning Meetup SpainMachine Learning Meetup Spain
Machine Learning Meetup Spain
 
LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)
 
SAP - PowerBI integration
SAP - PowerBI integrationSAP - PowerBI integration
SAP - PowerBI integration
 
Aplicaciones Big Data Marketing
Aplicaciones Big Data MarketingAplicaciones Big Data Marketing
Aplicaciones Big Data Marketing
 
A federated information infrastructure that works
A federated information infrastructure that works A federated information infrastructure that works
A federated information infrastructure that works
 
9 problemas en proyectos Data Analytics
9 problemas en proyectos Data Analytics9 problemas en proyectos Data Analytics
9 problemas en proyectos Data Analytics
 
PowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y CursosPowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y Cursos
 
Sports Analytics
Sports AnalyticsSports Analytics
Sports Analytics
 
Vertica Extreme Analysis
Vertica Extreme AnalysisVertica Extreme Analysis
Vertica Extreme Analysis
 
Businesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBIBusinesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBI
 
Vertica Analytics Database general overview
Vertica Analytics Database general overviewVertica Analytics Database general overview
Vertica Analytics Database general overview
 
Talend Cloud en detalle
Talend Cloud en detalleTalend Cloud en detalle
Talend Cloud en detalle
 
Master Data Management (MDM) con Talend
Master Data Management (MDM) con TalendMaster Data Management (MDM) con Talend
Master Data Management (MDM) con Talend
 
Talend Introducion
Talend IntroducionTalend Introducion
Talend Introducion
 
Talent Analytics
Talent AnalyticsTalent Analytics
Talent Analytics
 

Último

Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
JC Díaz Herrera
 
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
CristianCastro978067
 

Último (20)

Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfPosiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptxINTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdf
 
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdfINFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
 

Apache Storm: Instalación

  • 2. Apache Storm ● Storm tiene dos modos de operación local mode y remote mode (cluster). ● El entorno de desarrollo de storm tiene todo lo necesario para desarrollar y probar topologías storm en modo local. ● Un storm cluster es gestionado por un nodo maestro llamado Nimbus. ● La máquina de desarrollo se comunica con Nimbus y le envía el código empaquetado en jar y las topologías para ejecutar en el cluster. Nimbus se encarga de distribuir el código en el cluster y asignar los workers para ejecutar la topología. ● Para comunicar el entorno de desarrollo con el cluster se utiliza el comando storm.
  • 3. Apache Storm en modo local 1. Descargar una release 1. Descomprimir 1. Añadir el directorio bin/ al PATH 1. Confirmar que bin/storm es ejecutable 1. Crear el fichero de configuración local de Storm ~/.storm/storm.yaml 1. Establecer la IP del servidor nimbus. nimbus.host: localhost
  • 4. Apache Storm en modo local 7. Iniciar el Zookeeper zkServer.sh start 8. Iniciar el Nimbus storm nimbus 9. Iniciar el Supervisor storm supervisor
  • 5. Ejecución de topologías ● Storm tiene dos modos de ejecución: local mode y distributed mode. ○ En local mode ejecuta todos los procesos simulando los nodos workers con threads. El local mode es muy útil para probar y desarrollar topologías. ○ En distributed mode, Storm se ejecuta en un cluster de máquinas. Cuando se envía la topología al nodo maestro se adjunta todo el código necesario para su ejecución. El nodo maestro se ocupa de distribuir el código y reservar los workers para ejecutar la topología. Si algún worker se cae el maestro los re-asigna.
  • 6. Configuración de topologías Config conf = new Config(); conf.setDebug(true); conf.setNumWorkers(2); TOPOLOGY_WORKERS: Indica cuantos procesos se quieren reservar en el cluster para ejecutar la topología. Cada componte en la topología ejecutará una serie de hilos. El número de hilos de un componente determinado se establece en los métodos setBolt y setSpout. Por ejemplo podemos tener 300 hilos a lo largo de todos los componentes y 50 procesos worker. Por tanto, cada proceso worker ejecutará 6 hilos, cada uno de los cuales puede pertenecer a un componente distinto. TOPOLOGY_DEBUG: Cuando se encuentra a true genera un log por cada mensaje emitido por un componente.
  • 7. Stream groupings ● Un stream groping indica a la topología como se deben enviar las tuplas entre dos componentes. Define como el stream se debe particionar entre los bolts. 1.ShuffleGrouping: envía la tupla a una tarea aleatoria. Tiene el efecto de distribuir de forma proporcional el procesado de las tuplas. Útil para operaciones atómicas como operaciones matemáticas. 2.FieldsGrouping: agrupa un stream por un subconjunto de campos. Esto implica que valores similares vayan a las mismas tareas. FieldsGrouping está implementado utilizando mod hashing 3. All grouping: El stream se copia en todas las tareas bolt. Hay que utilizarlo con precaución. Es útil para enviar señales a todos los bolts.
  • 8. Stream groupings 4. Global grouping: El stream entero va a un solo bolt, en concreto a la tarea bolt con el ID más bajo. 5. None grouping: Indica que no es relevante el orden, es equivalente a shuffle grouping. 6. Direct grouping: Un agrupamiento especial. El productor de la tupla decide que tarea va a consumir la tupla. Direct grouping solo se puede utilizar en streams declarados como direct streams. Las tuplas emitidas a un direct stream se deben generar con los métodos emitDirect. Un bolt puede obtener los ids de los consumidores por medio de TopologyContext. 7. Local grouping: Si el bolt tiene 1 o más tareas en el mismo proceso worker, las tuplas se mandan a estas tareas intra-proceso.
  • 9. Linea de comandos: storm Los parámetros del comando storm son: 1.jar 2.kill 3.activate 4.deactivate 5.rebalance 6.repl 7.classpath 8.localconfvalue 9.remoteconfvalue 10.nimbus 11.supervisor 12.ui 13.drpc
  • 10. storm jar ● Ejecuta el método main de la clase class con los argumentos especificados. Se configuran en el classpath los jars de ~/.storm y la configuración. ● El proceso StormSubmitter sube el jar indicado a la hora de enviar la topología. storm jar topology-jar-classpath class ...
  • 11. storm kill ● Termina la topología con el nombre topology-name. Storm primero finaliza los spouts de la topología y los mensajes que están pendientes de procesar se procesan. ● A continuación para los workers y limpia su estado. Se puede configurar el tiempo de desactivación y espera con el flag -w. storm kill topology-name [-w wait-time-secs]
  • 12. storm activate/deactivate ● Activa los spouts de la topología especificada. storm activate topology-name ● Desactiva los spouts de la topología especificada. storm deactivate topology-name
  • 13. storm rebalance ● Permite hacer un re-balanceo de la topología cuando se añaden nuevos nodos al cluster. ● Rebalance primero desactiva la topología en ejecución y después redistribuye los workers en la nueva configuración del cluster. La topología se inicia desde su estado previo. storm rebalance topology-name [-w wait-secs]
  • 14. storm ● Lanza el demonio supervisor. storm supervisor ● Lanza el demonio UI. El UI proporciona un interfaz web para storm y muestra información sobre las topologías en ejecución. storm ui ● Lanza el demonio Distributed RPC. storm drpc
  • 15. Arrancando y parando topologías en un cluster remoto ● Cuando se desea enviar una topología a un cluster remoto hay que cambiar la llamada LocalCluster a StormSubmitter e implementar el método submitTopology que es responsable de enviar la topología al cluster. ● Es necesario establecer la dirección IP del host maestro en ~/.storm/storm.yaml nimbus.host: "123.45.678.890"
  • 16. Paralelismo de Topologías ● Storm distingue entre las siguientes 3 entidades: 1. Procesos Worker 2. Executors (threads) 3. Tasks
  • 17. Paralelismo de Topologías ● Un proceso worker ejecuta un subconjunto de la topología. Un proceso worker pertenece a una topología determinada y puede ejecutar 1 o más executors para 1 o más componentes (Spouts o Bolts) de la topología. Una topología en ejecución consiste en muchos procesos ejecutándose en muchas máquinas de un cluster Storm. ● Un executor es un hilo que es creado por un proceso worker. Puede ejecutar 1 o más tareas para el mismo componente (spout o bolt).
  • 18. Paralelismo de Topologías ● Una task lleva a cabo el procesado de datos. Cada Spout o Bolt implementado en el código ejecuta todas las tareas necesarias en el cluster. ● El número de tareas de un componente es siempre el mismo a lo largo del ciclo de vida de la topología, pero el número de executors (threads) para un componente puede cambiar a lo largo del tiempo. ● La siguiente condición siempre se cumple: #threads <= #tasks. ● Por defecto el número de tasks es el mismo que el número de executors. Es decir Storm ejecuta una tarea por hilo.
  • 19. Paralelismo de Topologías ● Storm tiene el siguiente orden de preferencia en configuración: defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration ● Número de procesos worker Cuantos procesos se crean para la topología a lo largo de las máquinas del cluster. Opción de configuración: TOPOLOGY_WORKERS En código: Config#setNumWorkers
  • 20. Paralelismo de Topologías ● Número de executors (threads) ○ Cuantos executors se pueden crear por componente. ■ En código: TopologyBuilder#setSpout() TopologyBuilder#SetBolt() A partir de storm v0.8 se puede especificar con parallelism_hint el número de executors para un bolt concreto. ● Número de tareas (tasks) ○ Indica cuantas tareas se pueden crear por componente. Configuración: TOPOLOGY_TASKS Código: ComponentConfigurationDeclarer#setNumTasks() topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping("blue-spout);
  • 22. Cambiando el paralelismo en ejecución En Storm es posible modificar el paralelismo de una topología en ejecución.Lo cual se conoce como rebalancing, Hay dos opciones para el rebalance: 1. Utilizar el web UI de storm. 2. Utilizar la línea de comandos. storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
  • 23. Paralelizando spouts ● Se puede paralelizar la entrada a los spouts utilizando la clase TopologyContext y dividiendo el stream de entrada entre las instancias disponibles. public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) { //Obtenemos el num de spouts del contexto int spoutsSize = context.getComponentTasks(context.getThisComponentId( )).size(); //Obtenemos el ID de este spout int myIdx = context.getThisTaskIndex(); String[] tracks = ((String) conf.get("track")).split(","); StringBuffer tracksBuffer = new StringBuffer(); for(int i=0; i< tracks.length;i++){ //Comprobamos si este spout debe procesar el stream If( i % spoutsSize == myIdx){ tracksBuffer.append(","); tracksBuffer.append(tracks[i]); }
  • 24. Stratebi: Quiénes somos www.TodoBI.com info@stratebi.co m www.stratebi.com Mas información Tfno: 91.788.34.10 Madrid: Pº de la Castellana, 164, 1º Barcelona: C/ Valencia, 63 Brasil: Av. Paulista, 37 4 andar