Presentación de PowerPoint

Anuncio
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Pablo Acuña
Storm: Procesamiento distribuido de datos.
Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/
c_b_n_a
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Contenidos
- Presentación
- ¿Qué es Storm?
- Arquitectura y
componentes básicos
- Ejemplo
- storm-contrib
- Enlaces interesantes
2
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Pablo Acuña (@pacunar)
Tema de investigación: Uso de Redes Sociales en situaciones de
emergencias
3
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
¿Qué es Storm?
“Storm es un sistema de computación en tiempo real distribuido, de código libre
y abierto” (storm-project.net)
-
Escalable e interoperable
Tolerancia a fallos
Garantía de procesamiento
Multi-lenguaje
Fácil de montar, utilizar y operar
Es “el Hadoop del procesamiento de flujos de datos en tiempo real ”
Benchmark: 1 millón de mensajes (100b) / por segundo / por nodo
4
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Arquitectura
• Se ejecutan topologías
• 2 tipos de nodos: master and workers
• Nimbus (master)
• Supervisors (workers)
• Zookeeper
5
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Componentes básicos
• Topologías:
• Conjunto de nodos en un grafo
• Ejecutable
• Streams (flujos de datos):
• Secuencia ilimitada de tuplas
• Spouts:
• Origen de un stream
• Diferentes orígenes
• Bolts:
• Reciben, procesan y emiten streams
Storm proporciona las interfaces para implementar topologías, spouts y bolts.
6
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Spouts
Reciben cualquier origen de datos
para emitir streams a la topología
• Conexión a una API
• Kafka, Kestrel, RabbitMQ
• Sensores
• Logs
• Bases de datos
• Etc.
7
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Spouts: Funciones principales
- open
Inicialización
- nextTuple
Recoger y emitir tuplas
- declareOutputFields
Declaración de campos
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Bolts
Procesan la información recibida, ejecutando la lógica de la aplicación y
emitiendo nuevas tuplas
• Extiende a BaseBasicBolt o
BaseRichBolt
• Funciones principales:
-
prepare*
execute
declareOutputFields
cleanUp*
* No necesarios en BaseBasicBolt
9
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Topologías
• Se ejecuta indefinidamente (hasta que uno finalice el proceso)
• Definen qué spouts y bolts forman el grafo de computación, conectando cada nodo
• Definen configuración para su ejecución
• Lanza la ejecución de la topología en local o remoto.
10
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Topologías
• La clase TopologyBuilder es utilizada para unir los nodos
• Al asignar un Bolt a la topología (método setBolt), se asigna un Grouping:
• shuffleGrouping
• fieldsGrouping
• globalGrouping
• noneGrouping
• allGrouping
• customGrouping
• El método submitTopology envía la topología para su ejecución en el
cluster
• Ejecución Local (dev) y Remota (prod)
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Streams
• Permite definir flujos de datos entre los nodos de una topología.
• Cada nodo define un stream_id y los campos (Fields) que enviará
bolt
topología
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Ejemplo
• Obtener tweets del Streaming API de Twitter, obtener los TOP 5 hashtags
en base a un keyword.
• Necesitamos:
• Twitter4j
• Storm (0.8.2)
• Java 6 o 7
• Maven (para ejecución remota)
13
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Storm UI (puerto 8080)
14
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
storm-contrib (https://github.com/nathanmarz/storm-contrib)
• Repositorio de spouts, bolts, librerías, módulos para usar con Storm
- storm-cassandra
Bolts para guardar datos en Apache Cassandra
- storm-mongo
Bolts y Spouts para utilizar MongoDB
- storm-rdbms
Bolt para crear y almacenar datos en un RDBMS (tupla  fila)
- storm-kafka
Spout para recibir mensajes desde Apache Kafka
- storm-redis
Spout para recibir mensajes desde REDIS PubSub
15
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Enlaces interesantes:
-
http://storm-project.net/
https://github.com/apache/incubator-storm
Mailing-lists: [email protected] y [email protected]
https://twitter.com/stormprocessor
https://github.com/nathanmarz/storm/wiki
¿Qué me he dejado fuera?
- Trident
- Multilenguajes
- Cluster Management
Y mucho más!
- Workers vs. Executors vs. Tasks
- Logging
- Configuración
16
Leganés
6-7 Febrero 2014
Storm: Procesamiento distribuido de datos
Gracias!!
¿Preguntas, comentarios?
Descargar