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

Teoria 01 bases de datos 9 3 limites de mapeo
Teoria 01 bases de datos 9 3 limites de mapeoTeoria 01 bases de datos 9 3 limites de mapeo
Teoria 01 bases de datos 9 3 limites de mapeo
nileyna
 
Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binario
Mauricio Solano
 
Expo busqueda binaria
Expo busqueda binariaExpo busqueda binaria
Expo busqueda binaria
pool-deimer
 
Elementos de una máquina de turing
Elementos de una máquina de turingElementos de una máquina de turing
Elementos de una máquina de turing
vmtorrealba
 
Ejercicios base de_datos
Ejercicios base de_datosEjercicios base de_datos
Ejercicios base de_datos
xinithazangels
 

La actualidad más candente (20)

Teoria 01 bases de datos 9 3 limites de mapeo
Teoria 01 bases de datos 9 3 limites de mapeoTeoria 01 bases de datos 9 3 limites de mapeo
Teoria 01 bases de datos 9 3 limites de mapeo
 
DB1 Unidad 5: SQL Avanzado
DB1 Unidad 5: SQL AvanzadoDB1 Unidad 5: SQL Avanzado
DB1 Unidad 5: SQL Avanzado
 
Ejercicio 2
Ejercicio  2Ejercicio  2
Ejercicio 2
 
Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binario
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Arranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con AssemblerArranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con Assembler
 
24 Ejercicios Subnetting
24 Ejercicios Subnetting24 Ejercicios Subnetting
24 Ejercicios Subnetting
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Expo busqueda binaria
Expo busqueda binariaExpo busqueda binaria
Expo busqueda binaria
 
Elementos de una máquina de turing
Elementos de una máquina de turingElementos de una máquina de turing
Elementos de una máquina de turing
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
Características de MySQL
Características de MySQLCaracterísticas de MySQL
Características de MySQL
 
Merge sort
Merge sortMerge sort
Merge sort
 
Ejercicios base de_datos
Ejercicios base de_datosEjercicios base de_datos
Ejercicios base de_datos
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
 
Teoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesTeoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes Formales
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacion
 
Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
 
Ejercicios de normalizacion
Ejercicios de normalizacionEjercicios de normalizacion
Ejercicios de normalizacion
 
Mapa conceptual conversion analogico digital
Mapa  conceptual  conversion analogico digitalMapa  conceptual  conversion analogico digital
Mapa conceptual conversion analogico digital
 

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

Anclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclajeAnclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclaje
klebersky23
 
Reporte de incidencia delictiva Silao marzo 2024
Reporte de incidencia delictiva Silao marzo 2024Reporte de incidencia delictiva Silao marzo 2024
Reporte de incidencia delictiva Silao marzo 2024
OBSERVATORIOREGIONAL
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
BESTTech1
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
IrapuatoCmovamos
 

Último (20)

Las familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdfLas familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdf
 
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
 
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxCUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdfSEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
 
data lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdfdata lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdf
 
REGISTRO CONTABLE DE CONTABILIDAD 2022..
REGISTRO CONTABLE DE CONTABILIDAD 2022..REGISTRO CONTABLE DE CONTABILIDAD 2022..
REGISTRO CONTABLE DE CONTABILIDAD 2022..
 
Anclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclajeAnclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclaje
 
Reporte de incidencia delictiva Silao marzo 2024
Reporte de incidencia delictiva Silao marzo 2024Reporte de incidencia delictiva Silao marzo 2024
Reporte de incidencia delictiva Silao marzo 2024
 
Unidad 6 estadística 2011 TABLA DE FRECUENCIA
Unidad 6 estadística 2011  TABLA DE FRECUENCIAUnidad 6 estadística 2011  TABLA DE FRECUENCIA
Unidad 6 estadística 2011 TABLA DE FRECUENCIA
 
aine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificaciónaine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificación
 
procedimiento paran la planificación en los centros educativos tipo v(multig...
procedimiento  paran la planificación en los centros educativos tipo v(multig...procedimiento  paran la planificación en los centros educativos tipo v(multig...
procedimiento paran la planificación en los centros educativos tipo v(multig...
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
 
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
ROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANASROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANAS
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 

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