1. UNIVERSIDAD TECNICA DEL NORTE
Ing. Lenin Omar Lara Castro.
BIG DATA
Historia del Arte:
El Big Data o Datos Masivos se refieren a sistemas informáticos basados en la acumulación a gran escala
de datos y de los procedimientos usados para identificar patrones recurrentes dentro de esos datos. La
disciplina dedicada a los datos masivos se enmarca en el sector de las tecnologías de la información y la
comunicación.
Esta disciplina se ocupa de todas las actividades relacionadas con los sistemas que manipulan grandes
conjuntos de datos. Las dificultades más habituales vinculadas a la gestión de estas cantidades de datos
se centran en la captura, el almacenamiento, búsqueda, compartición, análisis, y visualización.
La tendencia a manipular ingentes cantidades de datos se debe a la necesidad en muchos casos de incluir
los datos relacionados del análisis en un gran conjunto de datos, como los análisis de negocio,
publicitarios, los datos de enfermedades infecciosas, el espionaje y seguimiento a la población o la lucha
contra el crimen organizado Los Big Data pueden ser tanto estructurados como no estructurados. Las
bases de datos relacionales tradicionales, como Informix y DB2, proporcionan soluciones comprobadas
para datos estructurados. A través de la extensibilidad, también gestionan datos no estructurados. La
tecnología Hadoop trae técnicas de programación nuevas y más accesibles para trabajar en
almacenamientos de datos masivos con datos tanto estructurados como no estructurados.
2. Apache Hadoop es un framework que permite el procesamiento de grandes volúmenes de datos a través
de clusters, usando un modelo simple de programación. Además su diseño permite pasar de pocos nodos
a miles de nodos de forma ágil. Hadoop es un sistema distribuido usando una arquitectura Master-Slave,
usando para almacenar su Hadoop Distributed File System (HDFS) y algoritmos deMapReduce para hacer
cálculos.
CARACTERISTICAS
HDFS
Si tenemos más de 4000 computadoras trabajando en sus datos, entonces más vale que distribuya sus
datos a lo largo de más de 4000 computadoras. HDFS hace esto para usted. HDFS es el sistema de
almacenamiento, es un sistema de ficheros distribuido. Fue creado a partir del Google File System (GFS).
HDFS se encuentra optimizado para grandes flujos y trabajar con ficheros grandes en sus lecturas y
escrituras. Su diseño reduce la E/S en la red. La escalabilidad y disponibilidad son otras de sus claves,
gracias a la replicación de los datos y tolerancia a los fallos. Los elementos importantes del cluster:
3. o NameNode: Sólo hay uno en el cluster. Regula el acceso a los ficheros por parte de los clientes.
Mantiene en memoria la metadata del sistema de ficheros y control de los bloques de fichero
que tiene cada DataNode.
o DataNode: Son los responsables de leer y escribir las peticiones de los clientes. Los ficheros están
formados por bloques, estos se encuentran replicados en diferentes nodos.
MAP REDUCE
MapReduce es un proceso batch, creado para el proceso distribuido de los datos. Permite de una forma
simple, paralelizar trabajo sobre los grandes volúmenes de datos, como combinar web logs con los datos
relacionales de una base de datos OLTP, de esta forma ver como los usuarios interactúan con el website.
El modelo de MapReduce simplifica el procesamiento en paralelo, abstrayéndonos de la complejidad que
hay en los sistemas distribuidos. Básicamente las funciones Maptransforman un conjunto de datos a un
número de pares key/value. Cada uno de estos elementos se encontrará ordenado por su clave, y la
función reduce es usada para combinar los valores (con la misma clave) en un mismo resultado.
Un programa en MapReduce, se suele conocer como Job, la ejecución de un Job empieza cuando el cliente
manda la configuración de Job al JobTracker, esta configuración especifica las
funciones Map, Combine (shuttle) y Reduce, además de la entrada y salida de los datos.
ARQUITECTURA:
4. HDFS, la capa inferior, yace sobre un clúster de hardware de producto. Servidores sencillos montados en
bastidor, cada uno con 2 núcleos Hex, 6 a 12 discos, y Ram de 32 GB. Para un trabajo de map-reduce, la
capa del correlacionador lee a partir de los discos a muy alta velocidad. El correlacionador emite pares de
valores claves que son ordenados y presentados al reductor, y la capa de reductor resume los pares de
valor clave. No, usted no necesita resumir, usted de hecho puede tener un trabajo map-reduce que solo
tiene correlacionadores. Esto debe ser más fácil de comprender cuando usted llegue al ejemplo python-
awk.
VENTAJAS
Ventajas Bajo coste: Clusters baratos o cloud
Facilidad de uso
Tolerancia a fallos
CASOS DE ÉXITO
Facebook
Twitter
Yahoo
5. Apache CouchDB, comúnmente llamada CouchDB, es un gestor de bases de datos de código abierto, cuyo
foco está puesto en la facilidad de su uso y en ser "una base de datos que asume la web de manera
completa". Se trata de una base de datos NoSQL que emplea JSON para almacenar los
datos, JavaScript como lenguaje de consulta por medio de MapReduce y HTTP como API. Una de sus
características más peculiares es la facilidad con la que permite hacer replicaciones. CouchDB fue liberada
por primera vez en 2005, transformándose en un proyecto Apache en 2008.
A diferencia de una base de datos relacional, CouchDB no almacena los datos y sus relaciones en tablas.
En cambio, cada base de datos es una colección de documentos independientes. Cada documento
mantiene sus propios datos y su esquema autocontenido. Una aplicación puede acceder a múltiples bases
de datos, por ejemplo una residente en el teléfono móvil del usuario y otra residente en un servidor. Los
metadatos del documento contienen información acerca de la versión del mismo, permitiendo refundir
cualesquiera diferencias que puedan haberse producido mientras las bases de datos estaban
desconectadas.
CouchDB implementa una forma de control de concurrencia multiversión (MVCC) a fin de evitar la
necesidad de bloquear el archivo de base de datos durante las escrituras. La resolución de conflictos se
delega a la aplicación. Para resolver un conflicto generalmente se requiere primero refundir los datos en
uno de los documentos para luego eliminar el otro.
Otras características son una semántica ACID con consistencia eventual, MapReduce, replicación
incremental y tolerancia a los fallos. Las labores de administración se facilitan por medio de una aplicación
web incorporada, llamada Futon.
CARACTERÍSTICAS PRINCIPALES
6. Almacenamiento de documentos
CouchDB almacena los datos como "documentos", esto es, uno o más pares campo/valor expresados en
JSON. Los valores de los campos pueden ser datos simples como cadenas de caracteres, números o fechas.
Pero también se pueden usar listas ordenadas y vectores asociativos. Todos los documentos en una base
de datos CouchDB tienen un identificador único y no requieren un esquema determinado.
Semántica ACID
CouchDB provee una semántica de atomicidad, consistencia, aislamiento y durabilidad.8 Lo hace
implementando una forma de control de concurrencia multiversión, lo que significa que CouchDB puede
manejar un gran número de lectores y escritores en paralelo, sin que surjan conflictos.
Vistas e índices Map/Reduce
Los datos almacenados se estructuran por medio de vistas. En CouchDB, cada vista se construye por medio
de una función JavaScript que actúa como la mitad Map de una operación map/reduce. La función recibe
un documento y lo transforma en un único valor, retornándolo. CouchDB puede indexar vistas y mantener
actualizados esos índices a medida de que se agregan, eliminan o actualizan documentos.
Arquitectura distribuida con replicación
CouchDB se diseñó con teniendo en mente la replicación bidireccional (o sincronización) y la operación
off-line. Eso significa que múltiples réplicas pueden tener cada una sus propias copias de los mismos datos,
modificarlas y luego sincronizar esos cambios en un momento posterior.
Interfaz REST
Todos los ítems tienen una URI única que queda expuesta vía HTTP. REST usa los métodos HTTP POST,
GET, PUT y DELETE para las cuatro operaciones básicas CRUD (Create, Read, Update, Delete) con todos
los recursos.
Consistencia Eventual
7. CouchDB garantiza consistencia eventual para poder ofrecer tanto disponibilidad como tolerancia a las
particiones.
Hecha para operar offline
CouchDB puede replicar datos a dispositivos (como smartphones) que pueden quedar offline y manejar
automáticamente la sincronización de los datos cuando el dispositivo vuelve a estar en línea. CouchDB
también ofrece una interfaz de administración incorporada y accesible vía web llamada Futon.
CASOS DE ÉXITO
CouchDB se usa en determinadas aplicaciones para Android, tales como "SpreadLyrics", así como
aplicaciones para Facebook como "Will you Kissme" o "Birthday Greeting Cards", o bien sitios web como
"Friendpaste"
Entre las empresas que han usado o actualmente usan CouchDB se pueden mencionar:
Ubuntu para su servicio de sincronización "Ubuntu One" hasta noviembre de 2011pero fue
descontinuado por problemas de escalabilidad.
La BBC, para sus plataformas de contenidos dinámicos14
Credit Suisse, para usos internos en el departamento de commodities para su framework de
mercados.11
Meebo, para su plataforma social (web y aplicaciones) - Meebo fue adquirido por Google y cesó
sus operaciones el 12 de julio de 2012.
ARQUITECTURA
Cuando las bases de datos relacionales son costosas para replicar debido a la complejidad de hacer el
seguimiento de los cambios en las bases de datos. Después de una sincronización inicial CouchDB sólo
replica los cambios. Sería bastante fácil de dar a cada nodo de su propio ejemplo CouchDB y replicar los
cambios necesarios a partir de una base de datos master central; creando así (casi) nodos autónomos:
8. NEW SQL
NewSQL es una clase de modernos relacionales sistemas de gestión de bases de datos que tratan de
ofrecer el mismo rendimiento escalable de NoSQL sistemas para el procesamiento de transacciones en
línea (OLTP) las cargas de trabajo, manteniendo los de escritura lectura ACID garantías de un sistema de
base de datos tradicional.
Nuevas Arquitecturas
El primer tipo de sistemas NewSQL son plataformas de bases de datos completamente nuevas. Están
diseñadas para funcionar en un clúster distribuido shared-nothing, en el que cada nodo posee un
subconjunto de los datos. Aunque en muchas de las nuevas bases de datos se han usado diferentes
enfoques de diseño, hay dos categorías principales en evolución.
El primer tipo envía la ejecución de transacciones y consultas a los nodos que contienen los datos
necesarios. Las consultas SQL se dividen en fragmentos y se envían a los nodos, que son los que procesan
y contienen de los datos. Estas bases de datos son capaces de escalar linealmente a medida que se agregan
nodos adicionales.
9. Bases de datos de uso general: Estas mantienen la funcionalidad completa de bases de datos tradicionales
y el manejo de todo tipo de consultas. Estas bases de datos se escriben a menudo a partir de cero con una
arquitectura distribuida en mente, e incluyen componentes como el control distribuido de concurrencia,
el control de flujo, y el procesamiento de consultas distribuidas. Entre ellas están Google Spanner, Clustrix,
NuoDB y TransLattice.
Base de datos en memoria: Las solicitudes dirigidas por estos sistemas NewSQL se caracterizan por tener
un gran número de transacciones de corta duración (es decir, sin puestos de usuario), que tocan un
pequeño subconjunto de datos utilizando las búsquedas de índice (es decir, no hay recorridos de tablas
completos o grandes joins distribuidos) y repetitivas (es decir, ejecutan las mismas consultas con
diferentes entradas). Estos sistemas NewSQL logran un alto rendimiento y escalabilidad al evitar que gran
parte de la arquitectura sea heredada del diseño original del Sistema R, tales como los algoritmos de
recuperación o de control de concurrencia. Dos sistemas de ejemplo de esta categoría son VoltDB y
SQLFire de GoPivotal.
Motores MySQL.
La segunda categoría está muy optimizada como motor de almacenamiento de SQL. Estos sistemas
proporcionan la misma interfaz de programación que MySQL, pero con mejor escala incorporada en los
motores, como InnoDB. Varios ejemplos de estos nuevos motores son: TokuDB, MemSQL y Akiban.
Protección transparente
Estos sistemas proporcionan una capa protectora intermedia para dividir automáticamente las bases de
datos a través de múltiples nodos. Algunos ejemplos de este tipo de sistema son dbShards, Scalearc,
Scalebase y MySQL Cluster.
10. CARACTERISTICAS
Real-Time Analytics en datos operativos en Vivo
Clustrix DB le permite manejar los datos masivos y necesidades de transacción de su aplicación,
simplemente, sin cambios en el código y sin reemplazar la base de datos o el hardware a medida que
crecen sus necesidades de aplicación.
Análisis en tiempo real le permiten obtener una fracción de segundo respuesta a consultas complejas
sobre los datos del cliente en marcha hasta la fecha, sin necesidad de crear bases de datos redundantes.
Clustrix DB emplea procesamiento paralelo masivo (MPP) a través de su grupo de distribución para
paralelizar y distribuir las consultas SQL, y utiliza todos los recursos disponibles de la agrupación para
11. acelerar las consultas. Clustrix DB emplea múltiples versión control de concurrencia (MVCC) para asegurar
que lee y escribe no interfieren entre sí, lo que permite el análisis para correr en paralelo con las escrituras
y actualizaciones sin afectar el rendimiento.
En la memoria de análisis en Clustrix DB utilizan memoria respaldada por los SSD. Los datos calientes de
uso común se queda en la memoria y el resto de los datos es sólo unos microsegundos de distancia, en
los SSD. Mediante el uso de esta combinación efectiva, Clustrix ofrece la mezcla perfecta de durabilidad,
velocidad y costo. Por el contrario, puras bases de datos en memoria son caros para las bases de datos de
TB-escala y carecen de durabilidad para las necesidades de bases de datos operacionales.
Self-Managing Operación
Prácticamente elimina tareas de operaciones DBA porque la dirección está incorporado en la base de
datos en sí. Se construye con muchos puntos de instrumentación y Clustrix Rebalancer siempre está
trabajando en un segundo plano, dejando el grupo saludable con una sobrecarga mínima.
Además permite ejecutar análisis en tiempo real sobre los datos operacionales en vivo sin moverlo a otro
sistema. Puede ejecutar consultas e informes sobre sus datos más valiosos.
Fácil Migración
Le permite seguir utilizando su código y lenguaje SQL. Para los usuarios de MySQL, los cambios de código
requeridos son mínimos. Clustrix se puede configurar como esclavo a MySQL y ascendido a maestro,
mientras que su base de datos y aplicaciones se están ejecutando.
Massive volumen de transacciones
Maneja el enorme volumen de transacciones que las aplicaciones grandes y de rápido crecimiento
necesitan, con facilidad. Agrega escalas cerca linealmente a medida que agrega los nodos, incluso con
cargas de trabajo altamente concurrentes.
12. Le permite manejar los datos masivos y necesidades de transacción de su aplicación, simplemente, sin
cambios en el código y sin reemplazar la base de datos o el hardware a medida que crecen sus necesidades
de aplicación.
Cada nodo puede recibir y procesar las transacciones. La base de datos cuenta con una arquitectura de
nada compartido, conocido a escala linealmente con distribuida.
BIBLIOGRAFIA:
• Carrillo Ruiz, Jose Antonio; Marco de Lucas, Jesus E.; Cases Vega, Fernando; Dueñas Lopez, Juan
Carlos; Cristino Fernandez, Jose; Gonzalez Muñoz de Morales, Guillermo; Pereda Laredo, Luis
Fernando (Marzo 2013). «Big Data en los entornos de Defensa y Seguridad». Instituto Español de
Estudios Estratégicos.
• Martín, Adriana; Chávez, Susana; Rodríguez, Nelson R.; Valenzuela, Adriana; Murazzo, Maria A.
(2013). «Bases de datos NoSql en cloud computing». WICC. Consultado el 18 de octubre de 2014.
• Kohlwey, Edmund; Sussman, Abel; Trost, Jason; Maurer, Amber (2011). «Leveraging the Cloud for
Big Data Biometrics». IEEE World Congress on Services.