Arquitectura	
  Lambda	
  
#BIGDATAMX	
  MEETUP	
  
@isragaytan	
  
israel.gaytan@vitatronix.net	
  
isragaytan@gmail.com	
  
Arquitectura	
  Lambda	
  
Israel	
  Gaytán	
  
CTO	
  Vitatronix	
  
@isragaytan	
  
¿De	
  qué	
  vamos	
  a	
  hablar?	
  
•  Mensajeo	
  ,	
  Nempo	
  real	
  y	
  batch	
  
•  Problemas	
  de	
  integración	
  de	
  datos	
  
•  Arquitectura	
  Lambda	
  
•  ¿Cómo	
  me	
  ayuda?	
  
•  KaRa,	
  Spark,	
  Cassandra	
  ,	
  Redis	
  
•  Implementación	
  
¿De	
  qué	
  vamos	
  a	
  hablar?	
  
Necesidades	
  Empresariales	
  
•  Infraestructura	
  Escalable	
  
•  ParNcionamiento	
  de	
  los	
  datos	
  
•  Replicación	
  
•  Arquitectura	
  descentralizada	
  (Shared	
  Nothing)	
  
•  Paralelización	
  
•  Aislamiento	
  
•  Localidad	
  de	
  datos	
  
El	
  problema	
  
•  El	
  problema	
  de	
  hoy	
  es	
  que	
  no	
  todas	
  las	
  
aplicaciones	
  pueden	
  ser	
  solamente	
  en	
  lotes	
  
(batch	
  processsing)	
  
•  Existen	
  aplicaciones	
  que	
  requieren	
  hacer	
  un	
  
cómputo	
  sobre	
  los	
  datos	
  para	
  tomar	
  
decisiones	
  en	
  Nempo	
  real	
  
•  Ej:	
  Alertas	
  Financieras,	
  Detección	
  de	
  Fraude	
  
etc	
  	
  
La	
  necesidad	
  
	
  Necesito	
  acceder	
  rápidamente	
  a	
  datos	
  
históricos	
  (Big	
  Data)	
  para	
  efectuar	
  modelos	
  
predicNvos	
  pero	
  también	
  con	
  datos	
  en	
  Nempo	
  
real.	
  
Solución	
  
¿En	
  que	
  consite	
  la	
  arquitectura	
  
Lambda?	
  
•  La	
  desarrollo	
  Nathan	
  Martz	
  
•  Se	
  cuenta	
  con	
  3	
  capas	
  
•  Capa	
  por	
  lotes	
  (Batch	
  Layer)	
  
•  Capa	
  de	
  servicio	
  (Serving	
  Layer)	
  
•  Capa	
  de	
  velocidad	
  (Speed	
  Layer)	
  
Capa	
  por	
  lotes	
  (Batch	
  Layer)	
  
•  Responsable	
  de	
  almacenar	
  todos	
  los	
  datos	
  
que	
  llegan	
  ya	
  sea	
  a	
  un	
  repositorio	
  como	
  HDFS,	
  
Cassandra	
  ,	
  Ceph	
  etc.	
  
•  Efectuar	
  el	
  cómputo	
  sobre	
  esos	
  datos	
  para	
  
acceder	
  a	
  vistas	
  o	
  a	
  información	
  arbitraria.	
  
Capa	
  de	
  Servicio	
  (Service	
  Layer)	
  
•  La	
  salida	
  de	
  la	
  capa	
  por	
  lotes	
  es	
  un	
  conjunto	
  
de	
  datos	
  conteniendo	
  el	
  cómputo	
  de	
  las	
  vistas	
  
•  La	
  capa	
  de	
  servicio	
  es	
  responsable	
  para	
  la	
  
indexación	
  y	
  exposición	
  de	
  esas	
  vistas	
  para	
  
que	
  puedan	
  ser	
  buscadas	
  (querys)	
  
	
  
Capa	
  de	
  Velocidad	
  (Speed	
  Layer)	
  
•  La	
  capa	
  de	
  velocidad	
  es	
  encargada	
  de	
  efectuar	
  
el	
  cómputo	
  en	
  Nempo	
  real.	
  
•  Las	
  vistas	
  en	
  Nempo	
  real	
  son	
  transitorias	
  tan	
  
pronto	
  como	
  los	
  datos	
  se	
  propaguen	
  a	
  la	
  capa	
  
batch	
  y	
  de	
  servicio	
  
Arquitectura	
  Lambda	
  
El	
  problema	
  de	
  integración	
  de	
  datos	
  
•  Se	
  Nenen	
  muchos	
  sistemas	
  y	
  se	
  requiere	
  que	
  
se	
  comuniquen	
  unos	
  con	
  otros	
  
•  A	
  través	
  de	
  APIS,	
  Servicios	
  Rest,	
  Web	
  Services	
  
etc	
  
•  De	
  igual	
  manera	
  se	
  Nenen	
  otros	
  repositorios	
  
de	
  datos	
  dónde	
  se	
  requiere	
  guardar	
  e	
  
interactuar	
  con	
  estos	
  datos.	
  
El	
  problema	
  de	
  integración	
  de	
  datos	
  
Aplicaciónes	
  
Web	
  
Logs	
  
Indexación	
  y	
  
búsqueda	
  
Aplicaciones	
  
legadas	
  
DB1	
   DB2	
   DB4	
  DB3	
  
Solución	
  
KaRa	
  
•  Mensajeo	
  Distribuido	
  de	
  alto	
  desempeño	
  
•  Desacopla	
  flujos	
  de	
  datos	
  
•  Maneja	
  Carga	
  masiva	
  de	
  datos	
  
•  Soporta	
  Consumidores	
  Masivos	
  
•  Distribución	
  y	
  parNció	
  a	
  través	
  de	
  nodos	
  
•  Recuperación	
  automáNca	
  contra	
  fallos	
  de	
  
brokers	
  
KaRa	
  
Aplicaciónes	
  
Web	
  
Logs	
  
Indexación	
  y	
  
búsqueda	
  
Aplicaciones	
  
legadas	
  
DB1	
   DB2	
   DB4	
  DB3	
  
Arquitectura	
  Lambda	
  
App	
  1	
  
App	
  2	
  
App	
  3	
  
App	
  4	
  
(Batch	
  Layer)	
  
(Service	
  Layer)	
  
Admin	
  Users	
  
Dashboards	
  
(Speed	
  Layer)	
  
Vistas	
  en	
  Nempo	
  Real	
  
Vistas	
  por	
  lotes	
  
Casos	
  de	
  uso	
  
•  Stream	
  de	
  datos	
  de	
  KaRa	
  a	
  Cassandra	
  
•  Stream	
  de	
  datos	
  de	
  Kafla	
  a	
  Spark	
  y	
  escribir	
  en	
  
cassandra	
  
•  Leer	
  datos	
  de	
  Spark	
  Streaming	
  y	
  escribirlos	
  en	
  
Cassandra	
  
•  Leer	
  datos	
  de	
  Cassandra	
  a	
  Spark	
  
¿Y	
  el	
  Nempo	
  real	
  apa?	
  
Spark	
  Streaming	
  
•  Necesito	
  resultados	
  conNnuos	
  en	
  un	
  stream	
  
•  Se	
  requiere	
  procesar	
  los	
  datos	
  y	
  devolverlos	
  a	
  
una	
  aplicación	
  o	
  persisNrlos	
  
•  Flujo	
  conNnuo	
  de	
  datos	
  a	
  través	
  de	
  DiscreNzed	
  
Data	
  Streams	
  	
  
•  Garangas	
  que	
  solamente	
  se	
  proceso	
  una	
  vez	
  
el	
  dato	
  
•  A	
  los	
  datos	
  que	
  llegan	
  puedo	
  aplicar	
  
algoritmos	
  de	
  Machine	
  learning	
  con	
  MLLib	
  
Aplicaciones	
  
•  Seguridad	
  
•  Machine	
  Learning	
  
•  IoT	
  
•  Detección	
  de	
  Fraudes	
  
•  Genómica	
  
•  Computación	
  Biológica	
  
Ok	
  ok,	
  pero	
  quiero	
  dashboards	
  en	
  
Nempo	
  real	
  
Existen	
  varias	
  opciones	
  
1.-­‐	
  El	
  cómputo	
  una	
  vez	
  hecho	
  por	
  Spark	
  
Streaming	
  /	
  Storm	
  lo	
  persisto	
  en	
  un	
  cache	
  como	
  
Redis	
  
2.-­‐	
  Redis	
  es	
  un	
  servidor	
  de	
  estructuras	
  de	
  datos	
  
que	
  almacena	
  en	
  memoria	
  (MemCached)	
  
3.-­‐	
  UNlizo	
  Node/JS	
  Socket.IO	
  con	
  el	
  publish	
  
subscribe	
  de	
  REDIS	
  para	
  empujar	
  datos	
  
2da	
  Opción	
  
•  El	
  cómputo	
  hecho	
  por	
  Spark	
  Streaming	
  lo	
  
devuelvo	
  a	
  KaRa	
  y	
  exisNrá	
  algún	
  consumidor	
  
(aplicación)	
  para	
  pintar	
  los	
  datos	
  
•  KaRa	
  también	
  se	
  integra	
  con	
  NodeJS	
  
Conclusión	
  
•  La	
  arquitectura	
  lambda	
  implica	
  muchas	
  
tecnologías	
  ,	
  e	
  infraestructura	
  
•  Puede	
  ser	
  muy	
  úNl	
  en	
  casos	
  de	
  negocio	
  
•  Se	
  debe	
  tener	
  en	
  cuenta	
  las	
  configuraciones	
  
de	
  KaRa,	
  Spark	
  Streamig,	
  Spark	
  (Cluster),	
  
Cassandra	
  ,	
  Redis	
  etc	
  
•  DEN	
  VALOR	
  A	
  SUS	
  DATOS	
  	
  
Gracias	
  
#BIGDATAMX	
  MEETUP	
  
@isragaytan	
  
israel.gaytan@vitatronix.net	
  
isragaytan@gmail.com	
  

Arquitectura Lambda

  • 1.
  • 2.
    Arquitectura  Lambda   Israel  Gaytán   CTO  Vitatronix   @isragaytan  
  • 3.
    ¿De  qué  vamos  a  hablar?   •  Mensajeo  ,  Nempo  real  y  batch   •  Problemas  de  integración  de  datos   •  Arquitectura  Lambda   •  ¿Cómo  me  ayuda?   •  KaRa,  Spark,  Cassandra  ,  Redis   •  Implementación  
  • 4.
    ¿De  qué  vamos  a  hablar?  
  • 5.
    Necesidades  Empresariales   • Infraestructura  Escalable   •  ParNcionamiento  de  los  datos   •  Replicación   •  Arquitectura  descentralizada  (Shared  Nothing)   •  Paralelización   •  Aislamiento   •  Localidad  de  datos  
  • 6.
    El  problema   • El  problema  de  hoy  es  que  no  todas  las   aplicaciones  pueden  ser  solamente  en  lotes   (batch  processsing)   •  Existen  aplicaciones  que  requieren  hacer  un   cómputo  sobre  los  datos  para  tomar   decisiones  en  Nempo  real   •  Ej:  Alertas  Financieras,  Detección  de  Fraude   etc    
  • 7.
    La  necesidad    Necesito  acceder  rápidamente  a  datos   históricos  (Big  Data)  para  efectuar  modelos   predicNvos  pero  también  con  datos  en  Nempo   real.  
  • 8.
  • 9.
    ¿En  que  consite  la  arquitectura   Lambda?   •  La  desarrollo  Nathan  Martz   •  Se  cuenta  con  3  capas   •  Capa  por  lotes  (Batch  Layer)   •  Capa  de  servicio  (Serving  Layer)   •  Capa  de  velocidad  (Speed  Layer)  
  • 10.
    Capa  por  lotes  (Batch  Layer)   •  Responsable  de  almacenar  todos  los  datos   que  llegan  ya  sea  a  un  repositorio  como  HDFS,   Cassandra  ,  Ceph  etc.   •  Efectuar  el  cómputo  sobre  esos  datos  para   acceder  a  vistas  o  a  información  arbitraria.  
  • 11.
    Capa  de  Servicio  (Service  Layer)   •  La  salida  de  la  capa  por  lotes  es  un  conjunto   de  datos  conteniendo  el  cómputo  de  las  vistas   •  La  capa  de  servicio  es  responsable  para  la   indexación  y  exposición  de  esas  vistas  para   que  puedan  ser  buscadas  (querys)    
  • 12.
    Capa  de  Velocidad  (Speed  Layer)   •  La  capa  de  velocidad  es  encargada  de  efectuar   el  cómputo  en  Nempo  real.   •  Las  vistas  en  Nempo  real  son  transitorias  tan   pronto  como  los  datos  se  propaguen  a  la  capa   batch  y  de  servicio  
  • 13.
  • 14.
    El  problema  de  integración  de  datos   •  Se  Nenen  muchos  sistemas  y  se  requiere  que   se  comuniquen  unos  con  otros   •  A  través  de  APIS,  Servicios  Rest,  Web  Services   etc   •  De  igual  manera  se  Nenen  otros  repositorios   de  datos  dónde  se  requiere  guardar  e   interactuar  con  estos  datos.  
  • 15.
    El  problema  de  integración  de  datos   Aplicaciónes   Web   Logs   Indexación  y   búsqueda   Aplicaciones   legadas   DB1   DB2   DB4  DB3  
  • 16.
  • 17.
    KaRa   •  Mensajeo  Distribuido  de  alto  desempeño   •  Desacopla  flujos  de  datos   •  Maneja  Carga  masiva  de  datos   •  Soporta  Consumidores  Masivos   •  Distribución  y  parNció  a  través  de  nodos   •  Recuperación  automáNca  contra  fallos  de   brokers  
  • 18.
    KaRa   Aplicaciónes   Web   Logs   Indexación  y   búsqueda   Aplicaciones   legadas   DB1   DB2   DB4  DB3  
  • 19.
    Arquitectura  Lambda   App  1   App  2   App  3   App  4   (Batch  Layer)   (Service  Layer)   Admin  Users   Dashboards   (Speed  Layer)   Vistas  en  Nempo  Real   Vistas  por  lotes  
  • 20.
    Casos  de  uso   •  Stream  de  datos  de  KaRa  a  Cassandra   •  Stream  de  datos  de  Kafla  a  Spark  y  escribir  en   cassandra   •  Leer  datos  de  Spark  Streaming  y  escribirlos  en   Cassandra   •  Leer  datos  de  Cassandra  a  Spark  
  • 21.
    ¿Y  el  Nempo  real  apa?  
  • 22.
    Spark  Streaming   • Necesito  resultados  conNnuos  en  un  stream   •  Se  requiere  procesar  los  datos  y  devolverlos  a   una  aplicación  o  persisNrlos   •  Flujo  conNnuo  de  datos  a  través  de  DiscreNzed   Data  Streams     •  Garangas  que  solamente  se  proceso  una  vez   el  dato   •  A  los  datos  que  llegan  puedo  aplicar   algoritmos  de  Machine  learning  con  MLLib  
  • 23.
    Aplicaciones   •  Seguridad   •  Machine  Learning   •  IoT   •  Detección  de  Fraudes   •  Genómica   •  Computación  Biológica  
  • 24.
    Ok  ok,  pero  quiero  dashboards  en   Nempo  real   Existen  varias  opciones   1.-­‐  El  cómputo  una  vez  hecho  por  Spark   Streaming  /  Storm  lo  persisto  en  un  cache  como   Redis   2.-­‐  Redis  es  un  servidor  de  estructuras  de  datos   que  almacena  en  memoria  (MemCached)   3.-­‐  UNlizo  Node/JS  Socket.IO  con  el  publish   subscribe  de  REDIS  para  empujar  datos  
  • 25.
    2da  Opción   • El  cómputo  hecho  por  Spark  Streaming  lo   devuelvo  a  KaRa  y  exisNrá  algún  consumidor   (aplicación)  para  pintar  los  datos   •  KaRa  también  se  integra  con  NodeJS  
  • 26.
    Conclusión   •  La  arquitectura  lambda  implica  muchas   tecnologías  ,  e  infraestructura   •  Puede  ser  muy  úNl  en  casos  de  negocio   •  Se  debe  tener  en  cuenta  las  configuraciones   de  KaRa,  Spark  Streamig,  Spark  (Cluster),   Cassandra  ,  Redis  etc   •  DEN  VALOR  A  SUS  DATOS    
  • 27.