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.
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:
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:
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
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
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
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:
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.
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.
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
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.
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.