Obtenga las instrucciones necesarias sobre arquitectura para crear sus aplicaciones de big data y aproveche al máximo la infraestructura de nube de AWS.
2. Agenda
Desafíos de Big Data
Simplificación del procesamiento de Big Data
¿Qué tecnologías se deben usar?
• ¿Por qué?
• ¿Cómo?
Arquitectura de referencia
Patrones de diseño
7. Principios arquitectónicos
“Bus de datos” desacoplado
• Datos → Almacenamiento → Procesamiento → Respuestas
Uso de la herramienta adecuada para cada tarea
• Estructura de datos, latencia, rendimiento, patrones de acceso
Aprovechamiento de los servicios administrados de AWS
• Sin intervención del administrador o muy poca,
escalable/elástico,disponible,confiable,seguro
Big Data ≠ costo elevado
8. Simplificación del procesamiento de Big Data
adquirir/recopilar almacenar procesar/
analizar
consumir/visualizar
Tiempo de respuesta (latencia)
Rendimiento
Costo
10. Tipos de datos
Transaccionales
• Lecturas y escrituras de base de
datos (OLTP)
• Caché
De búsqueda
• Registros
• Flujos
De archivos
• Archivos de registro (/var/log)
• Recopiladores y marcos de trabajo
de registros
De streaming
• Registros
• Sensores y datos de Internet de las
cosas (IoT)
Base de
datos
Almace-
namiento
de archivos
Almace-
namiento
en
streaming
A
iOS Android
Aplicaciones
web
Logstash
RegistroIoTAplicaciones
Datos
transaccionales
Datos de
archivos
Datos de
streaming
Aplica-
ciones
móviles
Datos de
búsqueda
Búsqueda
Recopilar Almacenar
RegistroIoT
11. ¿Cuál es la temperatura de sus datos y del acceso?
12. Calientes Templados Fríos
Volumen MB–GB GB–TB PB
Tamaño de
elemento B–KB KB–MB KB–TB
Latencia ms ms, s min, h
Durabilidad Baja–alta Alta Muy alta
Velocidad de
solicitudes Muy alta Alta Baja
Costo/GB $$-$ $-¢¢ ¢
Datos calientes Datos templados Datos fríos
Características de los datos y el acceso: calientes, templados, fríos
15. Opciones de almacenamiento en streaming
Servicios administrados de AWS
• Amazon Kinesis → flujos
• DynamoDB Streams → tabla + flujos
• Amazon SQS → cola
• Amazon SNS → Pub/Sub
No administrados
• Apache Kafka → streaming
16. Motivos para usar el software en streaming
Desacoplamiento de productores
y consumidores
Búfer persistente
Recopilación de varios flujos
Conservación de orden en cliente
MapReduce en streaming
Consumo en paralelo
4 4 3 3 2 2 1 1
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1
4 4 3 3 2 2 1 1
Fragmento 1/partición 1
Fragmento 2/partición 2
Consumidor 1
Recuento de
rojos = 4
Recuento de
violetas = 4
Consumidor 2
Recuento de
azules = 4
Recuento de
verdes = 4
Flujo de DynamoDB Flujo de Kinesis Tema de Kafka
17. ¿Qué almacenamiento en streaming debo
usar? Amazon
Kinesis
DynamoDB
Streams
Amazon SQS
Amazon SNS
Kafka
Administrado Sí Sí Sí No
Orden Sí Sí No Sí
Entrega al menos una vez exactamente una vez al menos una vez al menos una vez
Período de retención 7 días 24 horas 14 días Configurable
Replicación 3 AZ 3 AZ 3 AZ Configurable
Rendimiento Sin límite Sin límite Sin límite Nodos aprox.
Clientes en paralelo Sí Sí No (SQS) Sí
MapReduce Sí Sí No Sí
Tamaño de registro 1 MB 400 KB 256 KB Configurable
Costo Bajo Mayor (costo de tabla) Bajo-medio Bajo (+ admin.)
19. ¿Por qué Amazon S3 es idóneo para Big Data?
• Es compatible de forma nativa con flujos de Big Data (Spark, Hive, Presto, etc.).
• No requiere ejecutar clústers informáticos para el almacenamiento (al contrario que
HDFS).
• Permite ejecutar clústers de Hadoop transitorios e instancias de subasta de Amazon
EC2.
• Distintos clústers (Spark, Hive, Presto) pueden usar los mismos datos.
• Admite un número ilimitado de objetos.
• Presenta un ancho de banda muy alto, sin límite de rendimiento total.
• Ofrece alta disponibilidad con tolerancia a errores entre diferentes AZ.
• Se ha diseñado para una durabilidad del 99,999999999%.
• Usa almacenamiento por capas (Standard, IA, Amazon Glacier) mediante política de
ciclo de vida.
• Es seguro: cifrado SSL en reposo en los lados de cliente y servidor.
• Tiene un costo bajo.
20. Aplicaciones de HDFS y Amazon Glacier
• Use HDFS para los datos a los
que se accede con mucha
frecuencia (calientes).
• Use Amazon S3 Standard para los
datos a los que se accede con
frecuencia.
• Use Amazon S3 Standard – IA
para los datos a los que se accede
con poca frecuencia.
• Use Amazon Glacier para archivar
datos inactivos (fríos).
21. Base de datos
y búsqueda
A
iOS Android
Aplicaciones
web
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Apache
Kafka
Amazon
Glacier
Amazon
Kinesis
Amazon
DynamoDB
Amazon
ElastiCache
BúsquedaSQLNoSQLCachéAlmacenamientoenstreamingAlmacenamientodearchivos
Datos
transaccionales
Datos de
archivos
Datos de
streaming
Aplica-
ciones
móviles
Datos de
búsqueda
Recopilar Almacenar
22. Prácticas de uso no recomendadas de la capa de base
de datos y búsqueda
Capa de base de datos y búsqueda
23. Práctica recomendada: uso de la herramienta adecuada
para cada tarea
Capa de datos
Búsqueda
Amazon
Elasticsearch
Service
Amazon
CloudSearch
Caché
Redis
Memcached
SQL
Amazon Aurora
MySQL
PostgreSQL
Oracle
SQL Server
NoSQL
Cassandra
Amazon
DynamoDB
HBase
MongoDB
Capa de base de datos y búsqueda
25. ¿Qué almacenamiento de datos debo usar?
Estructura de datos → Esquema fijo, JSON, llave-valor
Patrones de acceso → Almacene los datos en el formato
bajo el cuál de vaya a accesar a ellos.
Características de los datos y el acceso → Calientes,
templados, fríos
Costo → Costo adecuado
26. Patrones de estructura y acceso de los datos
Patrones de acceso ¿Qué se usa?
Put/Get (clave, valor) Caché, NoSQL
Relaciones simples → 1:N, M:N NoSQL
Uniones de tablas cruzadas,
transacciones, SQL
SQL
Facetas, búsqueda Búsqueda
Estructura de datos ¿Qué se usa?
Esquema fijo SQL, NoSQL
Sin esquema (JSON) NoSQL, búsqueda
(Clave, valor) Caché, NoSQL
27. Caché
SQL
Velocidad de solicitudes
Alta Baja
Costo/GB
Alto Bajo
Latencia
Baja Alta
Volumen de datos
Bajo Alto
Glacier
Estructura
NoSQL
Datos calientes Datos templados Datos fríos
Baja
Alta
Búsqueda
28. Amazon
ElastiCache
Amazon
DynamoDB
Amazon
Aurora
Amazon
Elasticsearch
Amazon
EMR (HDFS)
Amazon S3 Amazon Glacier
Latencia media ms ms ms, s ms, s s, min, h ms, s, min
(tamaño
aprox.)
h
Volumen de
datos
GB GB–TB
(sin límite)
GB–TB
(64 TB máx.)
GB–TB GB–PB
(nodos aprox.)
MB–PB
(sin límite)
GB–PB
(sin límite)
Tamaño de
elemento
B-KB KB
(400 KB
máx.)
KB
(64 KB)
KB
(1 MB
máx.)
MB-GB KB-GB
(5 TB máx.)
GB
(40 TB máx.)
Velocidad de
solicitudes
Alta -
muy alta
Muy alta
(sin límite)
Alta Alta Baja – muy
alta
Baja –
muy alta
(sin límite)
Muy baja
Costo de
almacenamiento
GB/mes
$$ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢/10
Durabilidad Baja -
moderada
Muy alta Muy alta Alta Alta Muy alta Muy alta
Datos calientes Datos templados Datos fríos
Datos calientes Datos templados Datos fríos
¿Qué almacenamiento de datos debo usar?
29. Diseño con control de costos
Ejemplo: ¿Debo usar Amazon S3 o Amazon DynamoDB?
“En este momento estoy determinando el alcance de un proyecto
que aumentará de forma drástica el uso de Amazon S3 por parte
de mi equipo. Espero que me puedan resolver algunas dudas. La
iteración actual del diseño requiere muchos archivos pequeños,
con un posible máximo aproximado de mil millones en hora
punta. El tamaño total se situaría en torno a 1,5 TB al mes…”
Velocidad de
solicitudes
(escrituras/s)
Tamaño de objeto
(bytes)
Tamaño total
(GB/mes)
Objetos
al mes
300 2 048 1 483 777 600 000
30. Diseño con control de costos
Ejemplo: ¿Debo usar Amazon S3 o Amazon DynamoDB?
https://calculator.s3.amazonaws.com/index.html
Simple Monthly
Calculator
35. Procesar/analizar
El análisis de datos es un proceso que consiste en inspeccionar,
limpiar, transformar y modelar los datos con el objetivo de
descubrir información útil, sugerir conclusiones y respaldar la
toma de decisiones.
Ejemplos
Paneles interactivos → Análisis interactivo
Informes diarios/semanales/mensuales → Análisis por lotes
Alertas de facturación/fraude, métricas de 1 minuto → Análisis en
tiempo real
Análisis de opinión, modelos de predicción → Aprendizaje
automático
36. Análisis interactivo
Utiliza gran cantidad de datos (calientes/fríos)
Tarda segundos en obtener respuestas
Ejemplo: Paneles de autoservicio
37. Análisis por lotes
Utiliza gran cantidad de datos (calientes/fríos)
Tarda minutos u horas en obtener respuestas
Ejemplo: Generación de informes diarios, semanales
o mensuales
38. Análisis en tiempo real
Utiliza una cantidad reducida de datos calientes y hace
preguntas.
Tarda poco tiempo (milisegundos o segundos) en obtener la
respuesta.
Tiempo real (evento)
• Respuesta en tiempo real a eventos de los flujos de datos
• Ejemplo: Alertas de facturación/fraude
Casi en tiempo real (microlotes)
• Operaciones casi en tiempo real con pequeños lotes de eventos
de los flujos de datos
• Ejemplo: Métricas de 1 minuto
39. Predicciones mediante aprendizaje automático
El aprendizaje automático permite a un equipo informático
aprender sin haberlo programado expresamente para ello.
Algoritmos de aprendizaje automático:
Aprendizaje supervisado ← programa de “enseñanza”
- Clasificación ← ¿Es una transacción fraudulenta? (sí/no)
- Regresión ← ¿Cuál es su valor en la vida útil del cliente?
Aprendizaje no supervisado ← La máquina aprende por sí
misma
- Agrupación de clústeres ← Segmentación de mercado
40. Herramientas y marcos de trabajo
de análisis
Aprendizaje automático (AA)
• Mahout, Spark ML, Amazon ML
Análisis interactivo
• Amazon Redshift, Presto, Impala, Spark
Procesamiento de lotes
• MapReduce, Hive, Pig, Spark
Procesamiento de streaming
• Microlotes: Spark Streaming, KCL, Hive, Pig
• En tiempo real: Storm, AWS Lambda, KCL
Amazon
Redshift
Impala
Pig
Amazon Machine
Learning
Amazon
Kinesis
AWS
Lambda
AmazonElasticMapReduce
Procesamientode
streaming
Por
lotes
InteractivoAA
Analizar
Streaming
41. ¿Qué tecnología de procesamiento de streaming debo usar?
Spark Streaming Apache Storm Amazon Kinesis
Client Library
AWS Lambda Amazon EMR
(Hive, Pig)
Escala/
rendimiento
Nodos aprox. Nodos aprox. Nodos aprox. Automático Nodos aprox.
Por lotes o en
tiempo real
En tiempo real En tiempo real En tiempo real En tiempo real Por lotes
Facilidad de
administración
Sí (Amazon EMR) Hágalo usted
mismo
Amazon EC2 +
Auto Scaling
Administrado por
AWS
Sí (Amazon EMR)
Tolerancia a
errores
Una AZ Configurable Varias AZ Varias AZ Una AZ
Lenguajes de
programación
Java, Python, Scala Cualquier
lenguaje
mediante Thrift
Java, mediante
MultiLangDaemon
(.Net, Python,
Ruby, Node.js)
Node.js, Java,
Python
Hive, Pig, lenguajes
de streaming
Alta
42. ¿Qué tecnología de procesamiento de datos debo usar?
Amazon
Redshift
Impala Presto Spark Hive
Latencia de
consultas
Baja Baja Baja Baja Media (Tez) – Alta
(MapReduce)
Durabilidad Alta Alta Alta Alta Alta
Volumen de
datos
1,6 PB
máx.
Nodos aprox. Nodos
aprox.
Nodos aprox. Nodos aprox.
Administrada Sí Sí (EMR) Sí (EMR) Sí (EMR) Sí (EMR)
Almacenamiento Nativo HDFS/S3A* HDFS/S3 HDFS/S3 HDFS/S3
Compatibilidad
con SQL
Alta Media Alta Baja (SparkSQL) Media (HQL)
AltaMedia
44. Recopilar Almacenar Analizar Consumir
A
iOS Android
Aplicaciones
web
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Apache
Kafka
Amazon
Glacier
Amazon
Kinesis
Amazon
DynamoDB
Amazon
Redshift
Impala
Pig
Amazon ML
Amazon
Kinesis
AWS
Lambda
AmazonElasticMapReduce
Amazon
ElastiCache
BúsquedaSQLNoSQL
Caché
Procesamientode
streaming
Por
lotes
Interactivo
Registro
Almacenamientoen
streaming
IoTAplicaciones
Almacenamientode
archivos
Análisisyvisualización
Calientes
Fríos
Templados
Caliente
s
Lento
Calientes
AA
Rápid
o
Rápid
o
Datos
transaccionales
Datos de
archivos
Datos de
streaming
Blocsdenotas
Predicciones
Aplicaciones
y API
Aplica-
ciones
móviles
IDE
Datos de
búsqueda
ETL
Streaming
Amazon
QuickSight
46. Recopilar Almacenar Analizar Consumir
A
iOS Android
Aplicaciones
web
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Apache
Kafka
Amazon
Glacier
Amazon
Kinesis
Amazon
DynamoDB
Amazon
Redshift
Impala
Pig
Amazon ML
Amazon
Kinesis
AWS
Lambda
AmazonElasticMapReduce
Amazon
ElastiCache
BúsquedaSQLNoSQLCaché
ProcesamientodestreamingPor
lotes
Interactivo
Registro
Almacenamientoen
streaming
IoTAplicaciones
Almacenamientode
archivos
Análisisyvisualización
Caliente
s
Fríos
Templados
Caliente
s
Lento
Calientes
AA
Rápido
Rápido
Datos
transaccionales
Datos de
archivos
Datos de
streaming
Blocsdenotas
Predicciones
Aplicaciones
y API
Aplica-
ciones
móviles
IDE
Datos de
búsqueda
ETL
Arquitectura de referencia
Streaming
Amazon
QuickSight
48. “Bus de datos” desacoplado de varias fases
Varias fases
Almacenamiento desacoplado del procesamiento
Almacenar Procesar Almacenar Procesar
procesar
almacenar
49. Varias aplicaciones de procesamiento
(o conectores) pueden leer o escribir en
varios almacenes de datos
Amazon
Kinesis
AWS
Lambda
Amazon
DynamoDB
Conector de
Amazon
Kinesis - S3
procesar
almacenar
Amazon S3
50. Marcos de trabajo de procesamiento (KCL, Storm,
Hive, Spark, etc.) que pueden leer varios almacenes
de datos
Amazon
Kinesis
AWS
Lambda
Amazon
S3
Amazon
DynamoDB
Hive SparkStorm
Conector de
Amazon
Kinesis - S3
procesar
almacenar
51. Análisis en tiempo real
Productor
Apache
Kafka
KCL
AWS Lambda
Spark
Streaming
Apache
Storm
Amazon
SNS
Amazon
ML
Notificaciones
Amazon
ElastiCache
(Redis)
Amazon
DynamoDB
Amazon
RDS
Amazon
ES
Alerta
Estado
de apl.
Predicción en tiempo real
KPI
procesar
almacenar
DynamoDB
Streams
Amazon
Kinesis
52. Análisis
interactivo
y por lotes
Productor Amazon S3
Amazon EMR
Hive
Pig
Spark
Amazon
ML
procesar
almacenar
Consumir
Amazon
Redshift
Amazon EMR
Presto
Impala
Spark
Por lotes
Interactivo
Predicción por lotes
Predicción en tiempo real