Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
69 claves para conocer Big Data
1. Las 69 Claves para conocer Big Data…
… desde las trincheras
2. #1
Las características que definen al Big
Data son dadas por varias Vs.
Se habla de 5 y hasta 7 Vs, pero con 3
queda bien definido lo que es Big
Data:
Volumen, Velocidad y Variedad
6. #5
Otras Vs de las que se hablan son:
Veracidad y Valor
Y entre muchas otras:
Viscosidad, Variabilidad, etc…
7. #6
Las principales fases que se dan en un
entorno Big Data son:
Adquisición de datos,
almacenamiento, análisis y resultados
8. #7
Los entornos pueden ser:
De procesamiento por lotes (batch
processing)
De análisis en tiempo real (real time)
9. #8
En la fase de resultados, los datos
pueden ser representados mediante:
Paneles con cuadros de mandos,
reportes o, incluso, enlazar con un
entorno de Business Intelligence
10. #9
Los datos pueden ser capturados
mediante web scrapping a servicios
web, mediante procesos ETLs o a
través de herramientas de adquisición
de datos, entre otros
11. #10
La información puede ser muy diversa,
desde datos estructurados (bases de
datos relacionales), semiestructurados
(servicios webs) o no estructurados
(logs de máquinas, multimedia, etc)
12. #11
Entre las herramientas pertenecientes
a la Apache Software Foundation de
adquisición de datos, nos
encontramos con Flume y Sqoop
13. #12
Flume mueve eventos (datos) desde
un origen a un destino, a través de
agentes, que es una arquitectura que
comprende sources, channels y sinks
14. #13
Flume provee distintos tipos de
sources, desde opción de ejecutar un
comando en una máquina linux (tail
-20f a un fichero log), a extraer
ficheros de un directorio (spooling
directory), así como extraer datos de
streams como Twitter o servicios web
16. #15
Sqoop es una aplicación para mover
datos entre bases de datos
relacionales a Hadoop HDFS. Emplea
JDBC, de forma que puede
empleando el driver JDBC podemos
conectarnos con cualquier base de
datos (MySQL, PostgreSQL, Oracle,
Vertica etc.)
17. #16
Otra opción es emplear una
herramienta de integración de datos
como Pentaho Data Integration
(Kettle).
18. #17
Gracias a que Kettle incorpora
componentes Big Data (entrada y
salida de datos a Hadoop HDFS),
podemos obtener datos de distintos
orígenes, transformarlos parcialmente
y trasvasar los datos a un cluster de
Hadoop HDFS, todo ello de manera
muy sencilla y visual
20. #19
Hadoop HDFS es un sistema de
ficheros distribuidos que integra el
núcleo de Hadoop
21. #20
Hadoop HDFS emplea una
arquitectura maestro-esclavo,
levantando dos demonios, namenode
(para el maestro) y datanode (para el
esclavo)
22. #21
El nodo maestro, se encarga de
gestionar los metadatos del cluster.
Mientras que los nodos esclavos se
encargan exclusívamente de
almacenar la información
23. #22
Las bases de datos NoSQL (Not Only
SQL) son un conjunto de sistemas
gestores de bases de datos que
fueron desarrollados en empresas
privadas (Facebook, por ejemplo) y
que a diferencia de las bases de
datos relacionales, no tienen un
lenguaje de consulta en común
24. #23
Según en la forma de estructurar la
información, las bases de datos NoSQL
se pueden clasificar en 4 tipos: clave-
valor, familias de columnas,
documentos y grafos
25. #24
Entre las bases de datos clave-valor,
destaca Redis. Las más representativas
de las familias de columnas son
Apache Cassandra y Apache Hbase.
26. #25
En el tercer grupo, las bases de datos
de documentos, están MongoDB y
CouchDB. Y, en las bases de datos
orientadas a grafos, destaca Neo4j
27. #26
La clasificación dada (clave-valor,
familias de columnas, documentos y
grafos) nos sirve para comprender
cómo de complejos y grandes son los
datos que almacenan.
28. #27
Las bases de datos clave-valor son
muy útiles para albergar enormes
volúmenes de información por su
sencilla escalabilidad y por ser las más
rápidas, pero las consultas a realizar
van a muy sencillas
29. #28
Luego las DB Columnares, y las DB de
documentos (escalan peor, pero sus
consultas son mucho más potentes) y
finalmente las orientadas a documentos.
Sus consultas son mucho más complejas
(permiten desplegar algoritmos de grafos
como Dijkstra, Prim, Kruskal…) y pensados
para volúmenes de datos menores
30. #29
¿Cúal debo elegir? Además de lo
comentado en el punto anterior,
existe el Teorema CAP, por sus siglas
de Consistency (Consistencia),
Availability (Disponibilidad), Partition
Tolerance (Tolerancia a fallos)
31. #30
Este teorema dicta que en un sistema
de cómputo distribuido no se pueden
dar las 3 propiedades a la vez, como
mucho se darán 2 al mismo tiempo
32. #31
Para seleccionar un sistema NoSQL,
debemos seleccionar aquellos
sistemas que satisfacen aquellas dos
propiedades que sean más prioritarias
en nuestra problemática
33. #32
O garantizamos la consistencia y
disponibilidad (bases de datos
relacionales), o la consistencia y
tolerancia a fallos (MongoDB) o la
disponibilidad y tolerancia a fallos
(Cassandra)
34. #33
Cassandra escala empleando una
arquitectura de anillo, donde no hay
jerarquías y todos los nodos tienen el
tratamiento; MongoDb escala usando
una arquitectura maestro-esclavo,
donde todas las escrituras se realizan por
el nodo máster y las lecturas ya puede
ser por cualquiera de los nodos
35. #34
Estas bases de datos almacenan los
datos, en la medida que puedan, en
memoria RAM. De esa forma son tan
rápidas
36. #35
Una vez que la RAM alcanza un
porcentaje de ocupación, es cuando
consolidan la información en ficheros
inamovibles en disco. De esta forma,
es conveniente utilizar discos SSD para
entornos de alto rendimiento
37. #36
MapReduce es un paradigma de
modelo de programacion creado por
Google, que descomponiendo un
problema es funciones mapper y
reduce, permite realizar cálculos de
grandes volúmenes de datos a lo
largo de un cluster
38. #37
En esta fase destacan mayormente 2
tecnologías, Apache Hadoop y
Apache Spark
39. #38
Ambas realizan operaciones
MapReduce y emplean una
arquitectura maestro-esclavo, siendo
el nodo maestro el encargado de
articular jobs maps y reduce a lo largo
del cluster
40. #39
Tanto Hadoop como Spark, cuentan
con conectores con otras tecnologías
como son bases de datos NoSQL o
relacionales
41. #40
En el caso de Spark, se puede realizar
de forma muy sencilla con los
paquetes disponibles en Spark
Packages (http://spark-
packages.org/)
42. #41
Hadoop es un framework que permite
procesar grandes volúmenes de datos
a través de servidores commodity (un
hardware sencillo)
43. #42
Su implementación está basada en los
papers de Google sobre GFS (Google
File System, sistema distribuido de
ficheros de Google) y MapReduce,
dando lugar a HDFS y MapReduce
44. #43
Como escribir aplicaciones que
implementan funciones Map y
Reduce no es sencillo ni intuitivo, se
crearon una serie de componentes
que permiten analizar los datos de
forma más fácil. Estos componentes
son Hive, Pig, Mahout, entre otros
45. #44
Hive es una infraestructura de
datawarehouse por encima de
Hadoop que nos permite lanzar
consultas en HiveQL, un lenguaje
semejante a SQL pero empleando un
esquema “on read” (de lectura)
46. #45
Apache Pig es un intérprete de Pig
Latin, lenguaje en alto nivel que nos
permite de forma sencilla implementar
scripts para analizar grandes
volúmenes de datos
47. #46
Su sintaxis es muy sencilla y limpia, y
cualquier desarrollador puede analizar
datos sin implementar funciones
MapReduce
48. #47
Además permite extender las
funcionalidades mediante UDF,
funciones definidas por el usuario,
encontrando en Github grandes
aportes (en funciones estadísticas,
matemáticas, etc.)
49. #48
Apache Mahout, es la librería de
machine learning desplegando los
algoritmos, a diferencia de Weka y
otros, de forma distribuida a través de
un cluster de Hadoop etc.)
50. #49
Como Hadoop trabaja principalmente
en disco, siendo una tecnología muy
lenta para algoritmos iterativos (el
resultado de cada función map se
guarda temporalmente en disco, lo
mismo tras aplicar sort o reduce),
surgió Apache Spark
51. #50
Apache Spark guarda los datos en
memoria RAM para agilizar de esa
forma las operaciones de
MapReduce, siendo muchísimo más
rápido para algoritmos iterativos
52. #51
Spark guarda los datos en RAM en
unas bolsas llamadas RDDs (Resilient
Distributed Datasets), contando con
políticas de recuperación de datos en
caso de caída de alguno de los nodos
53. #52
Sobre los RDDs se ejecutan 2 tipos de
operaciones, transformaciones y
acciones. Las transformaciones dan
como resultado un nuevo RDD,
mientras que una acción obtiene
información del RDD
54. #53
Por ejemplo, de un RDD con toda la
información, si filtramos por un campo
obtendremos un nuevo RDD
(recordemos que los datos son
inamovibles), estaremos, por tanto,
aplicando una transformación
55. #54
Sobre este nuevo RDD, si consultamos
cuántos elementos contiene,
estaremos aplicando una acción
56. #55
Spark emplea un modo perezoso de
ejecución, si no lanzamos una acción
sobre un RDD no ejecutará
operaciones MapReduce hasta ese
momento, ni traerá los datos de los
orígenes
57. #56
¿Pero qué pasa si estamos
aplicacando transformaciones a
diversos RDDs generando nuevos? La
memoria RAM es limitada, por tanto,
Spark automáticamente desaloja de
ésta los RDDs que no se están usando.
Para evitar ésto, tenemos la opción de
persistir los datos
58. #57
Al igual que en Hadoop hay
componentes para hacer más fácil el
análisis de datos, sobre Spark ocurre lo
mismo, contando con Spark Shell,
Spark SQL, Mllib, Graphx y Spark
Streaming
59. #58
Spark Shell es la shell interactiva de
Spark, muy útil para comenzar a
desarrollar aplicaciones. Usa por
defecto Scala, pero existe tambien
Pyspark, pudiendo desarrollar en
Python
60. #59
Spark SQL es un componente de Spark
que transforma RDDs empleando SQL,
siendo estrechamente integrado para
trabajar con datos estructurados.
Tiene integración con Hive, JSON y
otros
61. #60
El equivalente a Mahout, es Mllib, la
librería de machine learning sobre
Spark. Podemos emplear los
algoritmos implementados en Java,
Scala y Python
62. #61
Graphx es la librería que trabaja con
grafos sobre Spark, implementando
algoritmos como Dijkstra, Primo o
Kruskal
63. #62
Spark Streaming es el componente de
near real time de Spark. A través de
unos RDDs definidios por una ventana
temporal (tiempo o número de filas)
permite hacer análisis de datos en casi
tiempo real.
64. #63
En real time existe una aplicación que
realmente implemente análisis en
tiempo real. Es Apache Storm
65. #64
Apache Storm puede ser articulado
mediante Apache Kafka, un sistema
de cola de mensajes con
publicadores y suscriptores pero
ofreciendo un rendimiento mucho
mayor que otras tecnologías del
mismo tipo (RabbitMQ, por ejemplo)
66. #65
Como todas estas tecnologías se
despliegan en modo cluster, es muy
importante de contar con alguna
aplicación que los gestione, para que
en caso de caída de un nodo lo
levante o que aporte seguridad,
existiendo aplicaciones como YARN
67. #66
Zookeeper, ofrece un servicio de
configuración de los nodos y registro
de nombre, para de esa forma hacer
más sencillo la configuración y
despliegue de un entorno Big Data.
68. #67
Muchas de estas tecnologías se
encuentran disponibles en
distribuciones ofrecidas por empresas
como Cloudera, Datastax,
Hortonworks o MapR
69. #68
Con Cloudera, Datastax, HortonWorks
o MapR, se puede desplegar un
cluster de forma sencilla, añadiendo
front ends para visualización del
estado del cluster y ofreciendo
soporte a empresas
70. #69
Si alguna vez tiene un problema de
Big Data, necesita ayuda, tiene el
dinero suficiente y puede localizarlos,
tal vez pueda contratar a... Stratebi
Gracias….